您的位置:首页 > 其它

hdu 5752 Sqrt Bo (水题)

2016-07-26 17:09 225 查看

Sqrt Bo

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)

Total Submission(s): 5    Accepted Submission(s): 5


[align=left]Problem Description[/align]
Let's define the function
f(n)=⌊n−−√⌋.

Bo wanted to know the minimum number y
which satisfies fy(n)=1.

note:f1(n)=f(n),fy(n)=f(fy−1(n))

It is a pity that Bo can only use 1 unit of time to calculate this function each time.

And Bo is impatient, he cannot stand waiting for longer than 5 units of time.

So Bo wants to know if he can solve this problem in 5 units of time.
 

[align=left]Input[/align]
This problem has multi test cases(no more than
120).

Each test case contains a non-negative integer n(n<10100).
 

[align=left]Output[/align]
For each test case print a integer - the answer
y
or a string "TAT" - Bo can't solve this problem.
 

[align=left]Sample Input[/align]

233
233333333333333333333333333333333333333333333333333333333

 

[align=left]Sample Output[/align]

3
TAT

水题;

问一个数最少开几次根后值为1,每次开根向下取证

超过5次输出TAT  否则输出最少次数

#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
#include<cmath>
using namespace std;

char ch[110];

long long i;
const long long num=4294967296-1;

int main()
{
while(~scanf("%s",ch))
{
int r=strlen(ch);
int l=0;
while(ch[l]=='0') l++;
if(r-l>10)
{
printf("TAT\n");
continue ;
}
i=0;
while(l<r)
{
i=i*10+(ch[l]-'0');
l++;
}
//cout<<i<<endl;
if(i>num||i==0)
{
printf("TAT\n");
}
else
{
int ii=0;
while(i!=1)
{
i=(long long )sqrt(i);
//cout<<i<<endl;
ii++;
}
printf("%d\n",ii);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: