• 2064 最小平方数


    2064 最小平方数

     

     时间限制: 1 s
     空间限制: 128000 KB
     题目等级 : 黄金 Gold
     
     
    题目描述 Description

    已知M^2  mod  10^x=N (x为N的位数),你能找到最小的M使式子成立吗?

    输入描述 Input Description

    一行,一个非负整数N。

    输出描述 Output Description

    输出1行,一个整数M,表示最小的M使M^2  mod  10^x=N。如果不存在M,则输出’None’。

    样例输入 Sample Input

    【样例输入1】

    3

    【样例输入2】

    21

    【样例输入3】

    25

    样例输出 Sample Output

    【样例输出1】

    None

    【样例输出2】

    11

    【样例输出3】

    5

    数据范围及提示 Data Size & Hint

    对于30%数据,N≤1000

    对于100%数据,N≤1000000000,-10^9 ≤ x,y ≤ 10^9

    分类标签 Tags 点此展开 

     
    AC代码:
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<cmath>
    #define ll long long
    using namespace std;
    const int N=1e3+10;
    char s[N];
    int main(){
        scanf("%s",s+1);
        int len=strlen(s+1);//平方数的尾数不可能为2,3,7,8
        if(s[len]=='2'||s[len]=='3'||s[len]=='7'||s[len]=='8'){puts("None");return 0;}
        ll n=atoi(s+1),k=1,a=0;//最后一个点较大,要开long long 
        for(int i=1;i<=len;i++) k*=10;//10^k
        do{
            ll c=n+k*a;
            double r=sqrt(c);
            if(r==floor(r)){//第一个满足要求的点就是最小的m
                printf("%lld",(ll)r);return 0;
            }
            a++;//枚举
        }while(a<=(ll)len*10000000);//范围玄学 
        puts("None");
        return 0;
    } 
  • 相关阅读:
    爬虫入门(五)
    爬虫入门(四)
    爬虫入门(三)
    爬虫入门(二)
    爬虫入门(一)
    openpyxl的简单使用
    ansible(三)
    ansible(二)
    ansible(一)
    CF Global Round 10-F
  • 原文地址:https://www.cnblogs.com/shenben/p/5923771.html
Copyright © 2020-2023  润新知