天天看點

HDU 5752 Sqrt Bo

Problem Description

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.

Input

120).

Each test case contains a non-negative integer 

n(n<10100).

Output

y

Sample Input

233

233333333333333333333333333333333333333333333333333333333

Sample Output

3

TAT

#include<set>
#include<map>
#include<cmath>
#include<stack>
#include<queue>
#include<bitset>
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<functional>
#define rep(i,j,k) for (int i = j; i <= k; i++)
#define per(i,j,k) for (int i = j; i >= k; i--)
using namespace std;
typedef long long LL;
const int low(int x) { return x&-x; }
const int mod = 1e9 + 7;
const int N = 1e3 + 10;
const int INF = 0x7FFFFFFF;
int T, m;
char s[N];
LL n;

int main()
{
    //scanf("%d", &T);
    while (scanf("%s", s) != EOF)
    {
        if (strlen(s) > 18) printf("TAT\n");
        else
        {
            sscanf(s, "%lld", &n);
            int ans = 0;
            for (ans = 0; ans < 6 && n != 1; ans++)
            {
                n = sqrt(1.0*n);
            }
            if (ans < 6)printf("%d\n", ans);
            else  printf("TAT\n");
        }
    }
    return 0;
}