zoukankan      html  css  js  c++  java
  • 1076 K尾相等数

    时间限制:500MS  内存限制:65536K
    提交次数:251 通过次数:80

    题型: 编程题   语言: C++;C

     

    Description

    从键盘输入一个自然数K(99999999>K>1),若存在自然数M和N(M>N),使得K的M次方和K的N次方均大于或等于1000,
    且它们的未尾三位数相等,则称M和N是一对“K尾相等数”。请编程序,输出K尾相等数中M+N最小值。




     

    输入样例

    2



     

    输出样例

    120
    #include<cstdio>
    #include<cstring>
    int powermod(int a,int b)
    {
        int ans=1;
        a=a%1000;
        if(!a) return 0;
        while(b)
        {
            if(b%2==1)
                ans=ans*a%1000;
            a=a*a%1000;
            b/=2;
        }
        return ans;
    
    }
    int main()
    {
        int res;
        int i,j=0,t,k,p;
        int a[1005];
        int leap=0;
        scanf("%d",&k);
        //下面的if else 语句,当k为对应值时,恰好其p次方超过一千
        if(k==2) p=10;
        else if(k==3) p=7;
        else if(k==4||k==5) p=5;
        else if(k==6||k==7||k==8||k==9||k==10)
            p=4;
        else if(k>=11&&k<=31) p=3;
        else if(k>=32&&k<=999) p=2;
        else p=1;
        
        for(i=p; i<=1001; i++)
        {
            res=powermod(k,i);
            a[j++]=res;
            //下面for循环用于判断之前有没有出现和这次求得的a[j-1]相同的值
            for(t=0; t<j-1; t++)
                if(a[j-1]==a[t])
                {
    
                    leap=1;
                    break;
                }
            if(leap) break;
    
        }
        //数组的下标从0开始,而代表幂的循环从p开始
        printf("%d
    ",(j-1+p)+(t+p));
        return 0;
    }
    View Code
  • 相关阅读:
    X-Plosives (并查集)
    HDU1272小希的迷宫 (并查集)
    React 初学
    js 插件 issue
    js常用方法
    常用网址
    js 零零散散的总结。
    git 常用命令
    es6 babel编译
    屏幕适配
  • 原文地址:https://www.cnblogs.com/orchidzjl/p/4283403.html
Copyright © 2011-2022 走看看