hdu 5752 Sqrt Bo (水题)

来源:互联网 发布:打考勤软件 编辑:程序博客网 时间:2024/05/15 00:22

Sqrt Bo

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 5    Accepted Submission(s): 5


Problem Description
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(fy1(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.
 

Input
This problem has multi test cases(no more than 120).

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

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

Sample Input
233233333333333333333333333333333333333333333333333333333333
 

Sample Output
3TAT

水题;

问一个数最少开几次根后值为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);        }    }}



0 0
原创粉丝点击