HDU 5752 Sqrt Bo
2016-07-26 19:41
330 查看
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(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
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
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
;
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;
}
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.
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
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
;
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;
}
相关文章推荐
- 【HDU 5366】The mook jong 详解
- 【HDU 2136】Largest prime factor 详细图解
- 【HDU 1568】Fibonacci 数学公式 详解
- HDU 1568
- HDU1290
- HDU1568(Fobonacci公式)
- HDU ACM Step 2.2.2 Joseph(约瑟夫环问题)
- HDU 1405
- HDU 1297
- hdu 1205
- hdu 2087
- hdu 1016
- HDU 4898 The Revenge of the Princess’ Knight ( 2014 Multi-University Training Contest 4 )
- HDU 5592 ZYB's Premutation 线段树(查找动态区间第K大)
- HDU 5240 Exam (好水的题)
- HDU5237 Base64 大模拟
- HDU 1000
- HDU 1001
- HDU 1016 Prime Ring Problem
- HDU 1017 A Mathematical Curiosity