您的位置:首页 > 其它

HDU 5752 Sqrt Bo

2016-07-27 20:35 309 查看
#include <iostream>
#include <sstream>
#include <cmath>
#include <algorithm>
#include <string.h>
using namespace std;
string s;
int main(){
while(cin>>s){
if(s.length()>10){
cout<<"TAT"<<endl;
continue;
}

stringstream ss;
long long n;
ss<<s;
ss>>n;

if(n>=pow(2,32)){  //=
cout<<"TAT"<<endl;
continue;
}
if(n==0){
cout<<"TAT"<<endl;
continue;
}
if(n==1){
cout<<"0"<<endl;
continue;
}

int t=0;
while(true){
if((int)(sqrt(n))==1){
t++;
break;
}
n=sqrt(n);
t++;
}

cout<<t<<endl;

}

}

f(n)=1 n<2^2;

f2(n)=1 n<2^4;

f3(n)=1 n<2^8;

f4(n)=1 n<2^16;

f5(n)=1 n<2^32;

2^32大约是10位数,所以大于10位数就输出“TAT”;

把字符串转换为long long 类型整数 因为int可能会溢出;

考虑n=0 n=1时特殊情况 然后暴力开方输出即可;

注意循环判定;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: