floyd判圈算法的运用
#include<bits/stdc++.h> using namespace std; int buf[100]; int next(int n,int k) { long long ans=(long long )k*k; int ind=0; while(ans){ buf[ind++]=ans%10; ans/=10; } while(n--){ ans*=10; ans+=buf[--ind]; } return ans; } int main() { int T,n,k; cin>>T; while(T--){ int Mx=0; cin>>n>>k; int a=k,b=k; Mx=k; do{ a=next(n,a); b=next(n,b); if(b>Mx) Mx=b; b=next(n,b); if(b>Mx) Mx=b; }while(a!=b); cout<<Mx<<endl; } }