题目链接:点击打开链接
题目大意:一个计算器,只能保留n位(每次计算结果的前n位),然后某天你很无聊,想知道从某个数到某个数的范围之间,将这个范围内每个数平方以后计算器上显示的数的最大值是多少。
解题思路:没多想,果断用STL库里的map水过... 没想到还真的可以,而且代码还很短!
#include <iostream>
#include <cmath>
#include <map>
#include <algorithm>
#define LL long long
using namespace std;
map <LL,LL> cal;
int main()
{
int t;
LL n,k,mmax;
cin >> t;
while(t--)
{
cal.clear();
cin >> n >> k;
mmax=k;
while(!cal.count(k))
{
cal[k]++;
k*=k;
LL temp=pow(10,n);
while(k>=temp)
k/=10;
mmax=max(mmax,k);
}
cout << mmax << endl;
}
return 0;
}