zoukankan      html  css  js  c++  java
  • K尾相等数(模运算)

    Description

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

    Input

    输入一个整数K

    Output

    输出M+N的最小值

    Sample Input

    2
    

    Sample Output

    120
    

    用到的知识点:

    取模运算

    ((a * b) \% mod = ((a \% mod) * (b \% mod)) \% mod)

    K尾相等数

    #include <iostream>
    #include <cstring>
    using namespace std;
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(NULL);
        cout.tie(NULL);
    
        int k, nums[1000];      // nums[(k^n) % 1000的余数] = n
        while (cin >> k)
        {
            if (k <= 1)
                return -1;
            memset(nums, 0, sizeof(nums));      // nums数组初始化0
            int n = 0, numPow = 1;              // 当前计数的幂次
            while (numPow < 1000)               // 找到>=1000时的k的n次幂
            {
                numPow *= k;
                n++;
            }
            while (true)
            {
                if (nums[numPow % 1000] == 0)
                    nums[numPow % 1000] = n;    // 如果nums[]为0, 没有标记过, 就标记当前的幂次数n
                else
                    break;              // 被标记过就是, 找到了第二个(M)标记的了
                numPow = (numPow % 1000) * (k % 1000);  // 模运算的乘法
                n++;    // 幂次++
            }
            cout << nums[numPow % 1000] + n << endl;    // nums[numPow % 1000]存的第一次(N)的, n为第二次(M)的
        }
        return 0;
    }
    
  • 相关阅读:
    maven mirrorOf
    使用nexus 搭建本地 maven 服务器
    django 访问静态资源
    django 异常问题总结
    django导入 views.py
    vue js 实现 树形菜单
    vue.js 基础
    css之margin
    Vue项目笔记
    eslint ":"号
  • 原文地址:https://www.cnblogs.com/yanhua-tj/p/14017765.html
Copyright © 2011-2022 走看看