題目連接:http://acm.hdu.edu.cn/showproblem.php?pid=5752
【題意】f(n)=[n−−√],f^y(n)=f( f^(y-1)(n) ).對於一個數n,求解y=?使得f^y(n)=1,y>5或者不存在時輸出TAT。
【分析】很明顯的分段函數,分段判斷一下範圍,特判一下0就能A掉了。
【代碼】
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define LL long long
int main(){
string s;
while(cin>>s){
if(s.length()>10){
cout<<"TAT\n";
continue;
}
LL num=0;
for(int i=0;i<s.length();++i)
num=num*10+s[i]-'0';
if(num==0){
cout<<"TAT\n";
continue;
}
if(num<(1<<2)){
cout<<1<<endl;
continue;
}
if(num<(1<<4)){
cout<<2<<endl;
continue;
}
if(num<(1<<8)){
cout<<3<<endl;
continue;
}
if(num<(1<<16)){
cout<<4<<endl;
continue;
}
if(num<((1ll)<<32)){
cout<<5<<endl;
continue;
}
cout<<"TAT\n";
}
}