zoukankan      html  css  js  c++  java
  • 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;
    } 
  • 相关阅读:
    周末郑州程序员朋友技术交流中的PPT
    WCF并发连接数的问题
    郑州.Net技术人员的招聘信息
    在路上
    Windows8体验(1)安装
    挖掘0day打进不同学校
    记一次绕过宝塔防火墙的BC站渗透
    一次实战中对tp5网站getshell方式的测试
    一次从弱口令到getshell
    一次HW实战
  • 原文地址:https://www.cnblogs.com/shenben/p/5923771.html
Copyright © 2011-2022 走看看