zoukankan      html  css  js  c++  java
  • nyoj_212_K尾相等数_210402272239

     

    K尾相等数

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:1
     
    描述
    输入一个自然数K(K>1),如果存在自然数M和N(M>N),使得K^M和K^N均大于等于1000,且他们的末尾三位数相等,则称M和N是一对“K尾相等数”。下面请编程求出M+N最小的K尾相等数。
     
    输入
    第一行包含一个正整数T,T<10000,表示有T组数据; 随后有N行,每行包括一个整数K(K<2*10^10);
    输出
    对于输入的每个整数K,输出对应的M+N的最小值;
    样例输入
    1
    2
    样例输出
    120
    来源
    POJ
    上传者
    王冲5213
    解题思路:每次相乘后都取余,以余数为索引将指数存到数组中,若余数相同的存在,则直接返回当前指数与对应数组元素的和。经典题。
    (之前的想法是新得到的数再与前面的逐一比较,比较麻烦比较费时,参考别人的做法,是直接以得到的数为下标存入数组,再与之比较的时候直接就比较了,省时省事)
    代码如下:
    #include <stdio.h>
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            int s[1010]={0};
            int i,j,k,t,m;
            scanf("%d",&k);
            t=1;m=0;
            while(t<1000)
            {
                t*=k;
                m++;
            }
            t=t%1000;
            s[t]=m;
            k=k%1000;
            while(1)
            {
                t*=k;
                t=t%1000;
                m++;
                if(s[t])
                {
                    printf("%d ",m+s[t]);
                    break;
                }
                else
                s[t]=m;
            }
        }
        return 0;
    }
     1 #include <stdio.h>
     2 int main()
     3 {
     4     int T;
     5     scanf("%d",&T);
     6     while(T--)
     7     {
     8         int s[1010]={0};
     9         int i,j,k,t,m;
    10         scanf("%d",&k);
    11         t=1;m=0;
    12         while(t<1000)
    13         {
    14             t*=k;
    15             m++;
    16         }
    17         t=t%1000;
    18         s[t]=m;
    19         k=k%1000;
    20         while(1)
    21         {
    22             t*=k;
    23             t=t%1000;
    24             m++;
    25             if(s[t])
    26             {
    27                 printf("%d
    ",m+s[t]);
    28                 break;
    29             }
    30             else
    31             s[t]=m;
    32         }
    33     }
    34     return 0;
    35 }
    View Code
  • 相关阅读:
    MySQL数据库学习【第三篇】增删改查操作
    MySQL数据库学习【第二篇】基本操作和存储引擎
    MySQL数据库学习【第一篇】数据库安装
    python全栈开发基础【第二十七篇】IO模型
    python全栈开发基础【第二十六篇】(concurrent.futures模块、协程、Greenlet、Gevent)
    python基础之带参数装饰器和迭代器
    python基础之闭包函数与装饰器
    逻辑回归
    朴素贝叶斯
    决策树
  • 原文地址:https://www.cnblogs.com/xl1027515989/p/3572585.html
Copyright © 2011-2022 走看看