1. 程式人生 > >數論公式 互質數的最大不能組合數——小凱的疑惑

數論公式 互質數的最大不能組合數——小凱的疑惑

  在實訓時候,沒事幹的時候刷了牛客的數論專題,剛好刷到了一題。

  小凱的疑惑

  小凱手中有兩種面值的金幣,兩種面值均為正整數且彼此互素。每種金幣小凱都有無數個。在不找零的情況下,僅憑這兩種金幣,有些物品他是無法準確支付的。現在小凱想知道在無法準確支付的物品中,最貴的價值是多少金幣?注意:輸入資料保證存在小凱無法準確支付的商品。

  對於 100% 的資料:1 ≤ a,b ≤ 1,000,000,000。

  思路:看到這道題是真的沒有什麼思路,反正數論專題是真的沒有什麼頭緒 。。數學是真的不好 

  首先想到的是比這兩個數大的最小素數,wa了,大概是沒有什麼理論依據能證明他是最大的

  一直沒思路,只能去網上查查有沒有什麼公式或者推論 。。

  對於n和m兩個互質的數

  滿足最大不能組合數為 n*m-n-m;

  所有不能表示的數的個數為 (n-1)*(m-1)/2;

  具體的詳細證明:http://blog.sina.com.cn/s/blog_79b832820100riqp.html

  大致程式碼

  

#include <bits/stdc++.h>
using namespace std;
int main()
{
    long long n,m;
    cin>>n>>m;
    cout<<n*m-n-m<<endl;
    
return 0; }

  數論的程式碼是真的短。。。推出公式就很好寫 。注意n*m會爆int