HDU 5752 Sqrt Bo (思维题) 2016杭电多校联合第三场

时间:2021-10-15 05:40:42

题目:传送门

题意:一个很大的数n,最多开5次根号,问开几次根号可以得到1,如果5次还不能得到1就输出TAT。

题解:打表题,x1=1x2=(x1+1)*(x1+1)-1以此类推。x5是不超过long long的,判断输出即可。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
typedef long long ll;
char c[];
int main()
{
while(cin>>c)
{
int len=strlen(c);
if(len>=)
{
printf("TAT\n");
}
else
{
ll n=c[]-'';
ll maxx=;
for(int i=;i<len;i++)
n=n*+c[i]-'';
if(n==)
printf("TAT\n");
else if(n==)
printf("0\n");
else if(n<=)
printf("1\n");
else if(n<=)
printf("2\n");
else if(n<=)
printf("3\n");
else if(n<=)
printf("4\n");
else if(n<=maxx)
printf("5\n");
else
printf("TAT\n");
}
} return ;
}