您的位置:首页 > 其它

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

2016-08-08 20:05 453 查看
题目:传送门

题意:一个很大的数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[1005];
int main()
{
while(cin>>c)
{
int len=strlen(c);
if(len>=15)
{
printf("TAT\n");
}
else
{
ll n=c[0]-'0';
ll maxx=4294967295;
for(int i=1;i<len;i++)
n=n*10+c[i]-'0';
if(n==0)
printf("TAT\n");
else if(n==1)
printf("0\n");
else if(n<=3)
printf("1\n");
else if(n<=15)
printf("2\n");
else if(n<=255)
printf("3\n");
else if(n<=65535)
printf("4\n");
else if(n<=maxx)
printf("5\n");
else
printf("TAT\n");
}
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: