題目:計算k^2^m中,前n位構成的最大數字。
分析:數論,循環。找尋環節不斷的計算k^2^m和k^4^m相等時即為循環節。
說明:也可以使用map檢測循環╮(╯▽╰)╭。
#include <cstdio>
long long first_n_digit(long long a, int n)
{
long long b = 1LL;
for (int i = 0; i < n; ++ i)
b = b*10LL;
while (a >= b)
a /= 10LL;
return a;
}
int main()
{
int t, n, k;
while (~scanf("%d",&t))
while (t --) {
scanf("%d%d",&n,&k);
long long a = k+0LL;
long long b = k+0LL;
long long c = k+0LL;
if (n > 9)
n = 9;
do{
a = first_n_digit(a*a, n);
b = first_n_digit(b*b, n);
if (c < b) c = b;
b = first_n_digit(b*b, n);
if (c < b) c = b;
}while (a != b);
printf("%lld\n",c);
}
return 0;
}