hdu 1792 A New Change Problem 剩余系
来源:互联网 发布:最新通达信软件 编辑:程序博客网 时间:2024/06/05 06:21
#include <cstdio>#include <cmath>#include <cstring>#include <vector>#include <iostream>#include <algorithm>using namespace std;#define LL __int64int 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(数论)
- A New Change Problem
- A New Change Problem
- HDOJ 1792 A New Change Problem (数论)
- HDU 2662 Coin && HDU 1792 A New Change Problem (互质数最大不能生成数)
- 【HDU1792】A New Change Problem
- HDU 1792-A New Change Problem(互质数的最大不能表示数)
- HDU YY's new problem
- HDU Problem A
- hdu A + B problem
- hdu A simple problem
- HDU 5685 Problem A
- HDU - 5685 Problem A
- hdu 5685 Problem A
- HDU 5685 Problem A
- A Math Problem HDU
- C++中string 结束判断
- bb \w\h\u
- jquery实现原理:前言
- smali文件解析
- Linux学习之道:redhat9.0安装
- hdu 1792 A New Change Problem 剩余系
- 至情至性
- import javax.servlet 出错
- Gtk-WARNING**:无法在模块路径中找到主题引擎:“pixmap”的解决
- jquery 实现原理一:文件目录结构概览
- 如何解决安卓SDK无法下载Package的问题-修改google更新地址
- 舍
- jquery 实现原理二:core.js
- POJ 3281 - Dining 简单构图最大流..