码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 5752 Sqrt Bo (思维题) 2016杭电多校联合第三场

时间:2016-08-08 20:55:43      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:

题目:传送门

题意:一个很大的数n,最多开5次根号,问开几次根号可以得到1,如果5次还不能得到1就输出TAT。

题解:打表题,x1=1x2=(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\n");
        }
        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\n");
            else if(n==1)
            printf("0\n");
            else if(n<=3)
            printf("1\n");
            else if(n<=15)
            printf("2\n");
            else if(n<=255)
            printf("3\n");
            else if(n<=65535)
            printf("4\n");
            else if(n<=maxx)
            printf("5\n");
            else
            printf("TAT\n");
        }
    }

    return 0;
}

 

HDU 5752 Sqrt Bo (思维题) 2016杭电多校联合第三场

标签:

原文地址:http://www.cnblogs.com/Ritchie/p/5750771.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!