UVA - 11549

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;
    }
}

猜你喜欢

转载自www.cnblogs.com/033000-/p/10301488.html