hdu 5752 Sqrt Bo 水题
2016-07-26 17:51
375 查看
Sqrt Bo
题目连接:
http://acm.hdu.edu.cn/showproblem.php?pid=5752Description
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
233233333333333333333333333333333333333333333333333333333333
Sample Output
3TAT
Hint
题意
给你一个数,问你最少开多少次,可以变成1。如果超过五次还没有变成1,就输出TAT
题解:
象征性猜一猜,五次的根号不会很大。1->3->15->255->65535->4294967295
那就最大就是4294967295了,超过就直接输出TAT好了
代码
#include<bits/stdc++.h> using namespace std; string s; void solve(){ if(s.size()>18){ printf("TAT\n"); return; } long long n = 0; for(int i=0;i<s.size();i++){ n = n*10+s[i]-'0'; } if(n==1){ cout<<"0"<<endl; return; } for(int i=1;i<=5;i++){ n = sqrt(n); if(n==1){ cout<<i<<endl; return; } } cout<<"TAT"<<endl; } int main(){ while(cin>>s)solve(); return 0; }
相关文章推荐
- Object中的finalize方法的使用
- Android for arm上的so注入(inject)和挂钩(hook)
- 对象序列化
- 提高Linux工作效率的十大bash技巧
- nginx用户认证
- 微信的redirect_uri参数错误解决办法
- 我与IDEA的不舍情缘
- 利用red5搭建一个简单的流媒体直播系统(ubuntu 12.10)
- java过滤敏感词实现字符串替换功能
- 面试准备之---排序
- 简单的tab切换(jquery)
- css重置
- 轻松搞定JSONP跨域请求
- 【杭电】[4004]The Frog's Games
- device_create分析
- 杭电-2199 Can you solve this equation? (简单二分)
- Javaweb学习总结(三)--Eclipse中导入github上的项目
- jquery ligerui下拉框赋值问题
- UISlider基本使用
- AFNetworking (3.1.0) 源码解析 <四>