hdu 1792 A New Change Problem 剩餘系
#include <cstdio>
#include <cmath>
#include <cstring>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
#define LL __int64
int main()
{
int m,n;
while(cin>>m>>n)
{
cout<<(m-1)*n-m<<" "<<(n-1)*(m-1)/2<<endl;
}
return 0;
}
看了三篇這道題的解釋,一樣的、。不知道誰看誰的。。我還看不太懂,最後只有自己理解了。。有點混亂,湊合著就好
由於gcd(m,n)=1,所以 0,n,2*n,3*n,...(m-1)*n,對m作除,餘數肯定不同,且為{0,1,2,3...m-1}中的某數
若存在非負數p,q使得pm+qn=x,則x為可組合值,兩邊對m取餘,則(q*n)%m==x%m,p*m>=0,所以只要x比q*n大的數
都能被組合。由於q<m時,就能出現所有餘數,所以當x>=(m-1)*n時就必定可組合。
從(m-1)*n往下尋找,第二大q*n是(m-2)*n=(m-1)*n-n,由於,m,n順序無關,所以就令m<n.則只要比(m-1)*n-n大的且
不與(m-1)*n同餘的數都符合要求。(m-1)*n,(m-1)*n-1,...(m-1)*n-(m-1),都符合要求,只有(m-1)*n-m>(m-2)*n,且同餘,
**在m>n的情況下,由於對於q*n相鄰m-1個必定不同餘,所以結果一樣。
所以最大的不符合數是(m-1)*n-m
再討論不符合要求的方案數:
從大到小討論q*n。m>n
對於(m-1)*n,不符合要求的就是,比(m-1)*n小且與它同餘的數,就是(m-1)*n-m,(m-1)*n-2*m...
對於(m-2)*n,不符合要求的就是,(m-2)*n-m,(m-2)*n-2*m...
。。。
對於n,不符合要求的就是,n-m...
所以ans=n/m+(2*n)/m+(3*n)/m...+((m-1)*n)/m=(m-1)*(n-1)/2;(前式除法是取整的,不一定整除)
why?
對於n*m/m=n,這個是整除的,所以(i*n+(m-i)*n)/m=n;由於i*n/m必定不整除,所以i*n%m+(m-i)*n%m=m;
因而(i*n)/m+((m-i)*n)/m=n-1,得出:
ans=n/m+(2*n)/m+...((m-1)*n)/m=(n/m+(m-1)*n/m)+(2*n/m+(m-2)*n/m)+...=(n-1)*(m-1)/2
相關文章
- HDU 1792 A New Change Problem
- Hdu 1792 A New Change Problem 結論
- HDU 1792 - A New Change Problem(規律,最大不能組合數及其個數)
- 【HDU - 1792】A New Change Problem(推公式、互質數的最大不能表示數)公式
- HDU - 6182 A Math Problem
- change ^M to new line
- HDU 1002 A + B Problem II
- JavaScript 剩餘運算子JavaScript
- 中國剩餘定理
- 1232: 手機剩餘電量
- RSA遇上中國剩餘定理
- 中國剩餘定理(構造)
- [待更新]中國剩餘定理
- HDU 2256Problem of Precision(矩陣快速冪)矩陣
- 剩餘引數、擴充運算子
- boot分割槽剩餘空間不足boot
- linux檢視剩餘磁碟空間Linux
- 擴充套件中國剩餘定理套件
- 中國剩餘定理(個人筆記)筆記
- ES6 - 函式與剩餘運算子函式
- Lucas定理 & Catalan Number & 中國剩餘定理(CRT)
- 短視訊商城系統,scroll-view如何自適應頁面剩餘高度View
- BZOJ5118: Fib數列2(二次剩餘)
- 剩餘運算子與展開運算子的區別
- ES6箭頭函式的剩餘引數函式
- AcWing 1298. 曹衝養豬(中國剩餘定理)
- 前端-如何始終平均分配剩餘空間前端
- 大宇擬出售北軟剩餘股份及《仙劍》IP
- 獲取波場(Tron)錢包TRX、USDT餘額和剩餘頻寬、能量 - 筆記筆記
- Linux 系統存在 inode 號被用完但磁碟空間還有剩餘的情況Linux
- 詳解升級win10系統提示系統盤剩餘空間不足的解決方法Win10
- 二次剩餘Cipolla演算法學習筆記演算法筆記
- oracle 剩餘表空間查詢慢,解決辦法Oracle
- 擴充套件中國剩餘定理(EXCRT)學習筆記套件筆記
- 筆記本Win10系統如何開啟電池剩餘時間指示器筆記Win10
- 怎麼檢視微信收藏功能的剩餘可用空間
- 詳解flex佈局的元素如何分配容器的剩餘空間Flex
- 如何檢視linux系統中空閒記憶體/實體記憶體使用/剩餘記憶體Linux記憶體
- UITextView UITextField限制輸入字數以及精準剩餘字數顯示UITextView