zoukankan      html  css  js  c++  java
  • 1205. 买不到的数目

    首先说明两个数如果不互质那么本题无解

    裴蜀定理: (gcd(a, b) = c, 如果c > 1那么一定存在x和y使得xa + yb = c)

    假设两个数不互质,假设存在最大的能表示的数m,那么有:
    (xa + yb = m, 由于gcd(a, b) = c, 那么m = kc, 即xa + yb = kc, \又由于一定存在h,r使得ha + rb = c, 那么有等式(x + h)a + (y + r)b = (k + 1)c, \而(k + 1)c > kc = m,\所以m不是a和b能表示的最大的数,\所以和假设矛盾,获证:a和b不互质,它们能够表示的最大数不存在)

    所以题目的数据p和q一定互质。
    首先打表找规律
    3 2 1
    3 4 5
    3 5 7
    3 7 11
    3 8 13
    3 10 17
    3 11 19
    发现对于p, q为3, n的情况下
    3, n(n >= 2)情况下最大的不能表示的数是m
    那么3, n + 1 最大不能表示的数为m + 2
    所以对于p = 3时 3, n最大的不能表示的数为1 + 2 * (n - 2) = 2n - 3
    接着打表得到p = 4时的规律为
    4 3 5
    4 5 11
    4 7 17
    4 9 23
    4 11 29
    4 13 35
    得到5 + 3*(n - 3) = 3n - 4
    然后以此类推
    p, q为任意值时,结论为 ((p - 1) * q - p = pq - q - p = (p - 1)(q - 1) - 1)
    所以得到结论两个互质的数最大不能表示的数为 ((p - 1)(q - 1) - 1)
    这也是一个结论,证明非常麻烦。。。这里就先用了
    有代码:

    #include<iostream>
    using namespace std;
    
    int main(){
        int p, q;
        cin >> p >> q;
        
        cout << p * q - p - q << endl;
        return 0;
    }
    
  • 相关阅读:
    Redis主从复制及主从复制的注意事项
    Redis哨兵(Sentinel)
    Redis慢查询日志(slowlog)
    Memcached缓存雪崩现象
    PHP添加Memcached扩展
    Redis节省空间
    Memcached遇到的问题及解决办法
    C++ explicit关键字学习
    力扣:排序之topK||Kth元素的问题
    软聚类
  • 原文地址:https://www.cnblogs.com/tomori/p/13608108.html
Copyright © 2011-2022 走看看