hdu 1788

讲的是中国剩余定理,事实上题目不需要的

 

求N%Mi==m-a;

即(n+a)%Mi==0

即求这组Mi的最小公倍数

注意要用__int64

 

#include <iostream> using namespace std; __int64 gcd( __int64 a, __int64 b ) { if(b==0) return a; return gcd(b,a%b); } __int64 lcm( __int64 a, __int64 b ) { return a*b/gcd(a,b); } int main() { int n,a,mi; int tmp; __int64 ans; while(scanf("%d%d",&n,&a)!=EOF&&(n||a)) { ans=1; for(int i=0;i<n;i++) { scanf("%d",&mi); ans=lcm(ans,mi); } printf("%I64d/n",ans-a); } return 0; }

你可能感兴趣的:(ini,iostream)