很简单的水题,显然是有循环的,只要循环回出现过的数字就不必再继续平方了。
细节参见代码:
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
const int maxn = 1000;
ll T,n,m,k;
int main() {
scanf("%d",&T);
while(T--) {
scanf("%llu%llu",&n,&k);
set<ll> s;
ll ans = 0, cur = k, rhs = 9;
for(int i=2;i<=n;i++) rhs = rhs*10 + 9;
while(true) {
if(s.count(cur)) break;
s.insert(cur);
ans = max(ans,cur);
cur = cur * cur;
while(cur > rhs) cur /= 10;
}
printf("%llu\n",ans);
}
return 0;
}