hdu_5752_Sqrt Bo(xjb搞)

题目链接:hdu_5752_Sqrt Bo

题意:

给你一个数,问你最少要开多少次方才能为1

题解:

我们发现如果给的数大于232 那么肯定在5次以内是开不出来的,所以直接输出TAT,然后小于的就模拟一下,注意1和0的特判就行

 #include <cstdio>
#include <cstring>
#include <cmath>
typedef long long ll;
const ll INF = ((ll) << ) - ;
char inf[] ="";
char n[];
int len;
void fail()
{
printf("TAT\n");
}
void success()
{
ll ans = ;
for (int i = ; i < len; i++) ans = ans * + n[i] - '';
if (ans == ) {printf("1\n"); return;}
else if (ans == ) {printf("TAT\n"); return;}
int cnt = ;
while (ans > ) {ans = sqrt(ans); cnt++;}
printf("%d\n", cnt);
}
int main()
{
while (~scanf("%s", n))
{
len = strlen(n);
if (len > ) fail();
else if (len < ) success();
else
{
for (int i = ; i < ; i++)
if (n[i] > inf[i]) {fail(); break;}
else if (n[i] < inf[i]) {success(); break;}
else if (i == && n[i] == inf[i]) {success(); break;}
}
}
return ;
}
上一篇:CodeForces 625B 字符串模拟+思维


下一篇:CCF(JSON查询:40分):字符串+模拟