hdu 1573 中国剩余定理
2014-08-23 10:07
295 查看
题目:
求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], …, X mod a[i] = b[i], … (0 < a[i] <= 10)。
这道题应该用中国剩余定理,求出满足题意的最小X,然后求a[0]~a[n-1]的最小公倍数k,则满足条件的整数n满足X+k*i(i=0,1,2....)
解题代码:
求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], …, X mod a[i] = b[i], … (0 < a[i] <= 10)。
这道题应该用中国剩余定理,求出满足题意的最小X,然后求a[0]~a[n-1]的最小公倍数k,则满足条件的整数n满足X+k*i(i=0,1,2....)
解题代码:
#include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> #include<algorithm> using namespace std; int gcd(int a,int b) { return b==0?a:gcd(b,a%b); } int main() { int t,n,m; int a[10],b[10]; scanf("%d",&t); while(t--) { scanf("%d %d",&n,&m); int k=1; for(int i=0;i<m;i++) { scanf("%d",&a[i]); int p=gcd(k,a[i]); k=k*a[i]/p; } for(int i=0;i<m;i++) scanf("%d",&b[i]); int ans=0; for(int i=1;i<=(n<k?n:k);i++) { for(int j=0;j<m;j++) { if(i%a[j]!=b[j]) break; if(j==m-1) { ans=(n-i)/k+1; break; } } } printf("%d\n",ans); } return 0; }
相关文章推荐
- HDU 1573 X问题 (中国剩余定理解的个数)
- HDU - 1573 - X问题(中国剩余定理不满足互质情况下的求解)
- HDU 1573 X问题 [中国剩余定理]
- HDU 1573 中国剩余定理 (未学习)
- HDU_1573 X问题 中国剩余定理
- HDU 1573 X问题 (中国剩余定理 模线性方程组)
- HDU 1573 中国剩余定理 (未学习)
- [中国剩余定理]Hdu 1573——X问题
- hdu 1573 X问题 (非互质的中国剩余定理)
- hdu 1573 X问题 两两可能不互质的中国剩余定理
- hdu 1573 X问题 非互素的中国剩余定理应用
- hdu 1573 X问题 中国剩余定理
- HDU 1573 中国剩余定理 (未学习)
- hdu1573 中国剩余问题定理 模数非互质
- 中国剩余定理 hdu 1573 X问题
- hdu 1573 X问题 不互质的中国剩余定理
- hdu 1573 X问题 非互素的中国剩余定理应用
- HDU 1573 中国剩余定理 (未学习)
- HDU 1573 X问题 中国剩余定理
- hdu 1573 X问题 中国剩余定理(直接模板就OK了)