HDU 1788
必须MARK下:任何时候都要保持清醒头脑,不要被题目绕了。。
其实就是求最小公倍数。
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; __int64 v[20]; __int64 gcd(__int64 a,__int64 b){ if(b==0) return a; return gcd(b,a%b); } int main(){ int k,a; while(scanf("%d%d",&k,&a)!=EOF){ if(k==0&&a==0) break; for(int i=0;i<k;i++) scanf("%I64d",&v[i]); __int64 ans=v[0]; for(int i=1;i<k;i++){ ans=ans*v[i]/gcd(ans,v[i]); } printf("%I64d\n",ans-(__int64)a); } return 0; }