参考代码:
#include<bits/stdc++.h>
#define inf 1000000007
using namespace std;
int d[1000][1000];
int main(){
for (int i=0;i<233;i++) for (int j=0;j<233;j++) d[i][j]=inf;
for (int i=0;i<233;i++){
d[i][(i*i*i+i*i)%233]=1;
d[i][(i*i*i-i*i)%233]=1;
}
for (int k=0;k<233;k++)
for (int i=0;i<233;i++)
for (int j=0;j<233;j++) if (d[i][k]+d[k][j]<d[i][j])
d[i][j]=d[i][k]+d[k][j];
int tt;scanf("%d",&tt);
for (;tt--;){
int a,b;scanf("%d%d",&a,&b);
if (a==b) puts("0");
else if (b>=233) puts("-1");
else if (d[a%233][b]==inf) puts("-1");
else printf("%d\n",d[a%233][b]);
}
}
京公网安备 11010502036488号