HDU 5752 Sqrt Bo
原创
©著作权归作者所有:来自51CTO博客作者qq636b7aec0b3f1的原创作品,请联系作者获取转载授权,否则将追究法律责任
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;
}