标签:max space 推导 please size mil gre int 素数
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 533 Accepted Submission(s): 265
/************************************************************************* > File Name: HDU1792.cpp > Author: LyuCheng > Created Time: 2017年10月19日 星期四 02时56分57秒 ************************************************************************/ /* * 题意:给你两个素数,问你用这两个素数最大不能组成的数是什么,和有多少不能组成的数。 * 每个素数都可以用无数次 * * 思路:A*x+B*y=t; * 最大的不能组成: * 那么t可以分成两部分,一部分是能让A整除的,另一部分是mod A的余数,当t>=A*B-B=B*(A-1) * 时,1~(B*(A-1)) mod A 可以形成0~A-1的任何一个数,所以t>=A*B-B时一定能被组成,现在的问题 * 就是找小于A*B-B的第一个不能组成的,不能组成的条件就是小于A*B-B并且与他膜A同余的第一个数 * 也就是A*B-B-A * * 有多少不能组成的数: * 从上边知道一个数不能组成的条件就是这个数是B的倍数,并且小于A*x+B*y且与他同余,那么有 * (A-1)*B: (A-1)*B-A , (A-1)*B-2*A ... (A-1)*B/A-1个,(之所以减一因为(A-1)*B是可以被组成的) * (A-2)*B: (A-2)*B-A , (A-2)*B-2*A ... * (A-3)*B: (A-3)*B-A , (A-3)*B-2*A ... * ... * B: B-A, ... * * 那么结果 * res= (A-1)*B/A-1+(A-1)*B/A-1+...+B/A-1 * = (A-1)*(B-1)/2; * */ #include <bits/stdc++.h> using namespace std; int a,b; int main(){ while(scanf("%d%d",&a,&b)!=EOF){ printf("%d %d\n",a*b-a-b,(a-1)*(b-1)/2); } return 0; }
HDU1792A New Change Problem(GCD规律推导)
标签:max space 推导 please size mil gre int 素数
原文地址:http://www.cnblogs.com/wuwangchuxin0924/p/7691439.html