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;
    } 
  • 相关阅读:
    站立会议报告(7)
    团队博客(13)
    团队博客(12)
    意见评论
    团队博客(11)
    团队博客(10)
    团队博客(9)
    团队博客(8)
    站立会议报告(6)
    Java Callable
  • 原文地址:https://www.cnblogs.com/shenben/p/5923771.html
Copyright © 2011-2022 走看看