题意大概是看一个数是否开方5次得1或者小于1,这时候我们首先要想到2^32 开方5次得2,所以临界值就是2^32 -1。这个第一次我也没想到,看了题解后才反应过来,还要注意的是如何将字符串输入的数字字符如何转换成实际上的数值。注意是向下取整,所以开方5次只要小于等于1即可。
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
int i,j,s;
long long sum,n=powl(2,32)-1;
char m[1000];
while(gets(m))
{
sum=0;
s=strlen(m);
if(s>10)
{
printf("TAT\n");
continue;
}
for(i=0;i<s;i++)
{
sum=sum*10+m[i]-'0';
}
if(sum==0||sum>n)
{
printf("TAT\n");
continue;
}
if(sum==1)
{
printf("0\n");continue;
}
else
{
for(j=1;j<=5;j++)
{
sum=sqrt(sum);
if(sum<=1)
{
printf("%d\n",j);
break;
}
}
if(sum>1)
printf("TAT\n");
}
}
return 0;
}