UVa11549

xiaoxiao2021-02-28  81

#include<cstdio> #include<iostream> #include<algorithm> #include<stdio.h> #include<vector> #include<utility> #include<unordered_set> using namespace std; unsigned long long int T,n,k,ans,mod; int main() { scanf("%llu",&T); while(T--){ ans=0,mod=1; unordered_set<int>s; scanf("%llu %llu",&n,&k); //printf("n is %llu.k is %llu",n,k); for(int i=0;i<n;++i)mod*=10; while(s.find(k)==s.end()){ //printf("k is %llu\n",k); s.insert(k); ans=max(ans,k); k=k*k; while(k>=mod)k/=10; } printf("%llu\n",ans); } return 0; } //使用Floyd判圈法 #include<cstdio>#include<iostream>#include<algorithm>#include<stdio.h>#include<vector>#include<utility>#include<unordered_set>using namespace std;unsigned long long int T,n,k,k1,k2,mod,ans;unsigned long long int next(unsigned long long int mod,unsigned long long int k){ if(k==0)return k; k=k*k; while(k>=mod)k/=10; return k;}int main(){ scanf("%llu",&T); while(T--){ scanf("%llu %llu",&n,&k); mod=1,ans=k,k1=k,k2=k; for(int i=0;i<n;++i)mod*=10; do{ k1=next(mod,k1); ans=max(ans,k1); k2=next(mod,k2); ans=max(ans,k2); k2=next(mod,k2); ans=max(ans,k2); }while(k1!=k2); printf("%llu\n",ans); } return 0;}
转载请注明原文地址: https://www.6miu.com/read-81056.html

最新回复(0)