题目:传送门。
题意:一个很大的数n,最多开5次根号,问开几次根号可以得到1,如果5次还不能得到1就输出TAT。
题解:打表题,x1=1,x2=(x1+1)*(x1+1)-1,以此类推。x5是不超过long long的,判断输出即可。
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> using namespace std; typedef long long ll; char c[1005]; int main() { while(cin>>c) { int len=strlen(c); if(len>=15) { printf("TAT "); } else { ll n=c[0]-'0'; ll maxx=4294967295; for(int i=1;i<len;i++) n=n*10+c[i]-'0'; if(n==0) printf("TAT "); else if(n==1) printf("0 "); else if(n<=3) printf("1 "); else if(n<=15) printf("2 "); else if(n<=255) printf("3 "); else if(n<=65535) printf("4 "); else if(n<=maxx) printf("5 "); else printf("TAT "); } } return 0; }