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
",ans-(__int64)a);
	}
	return 0;
}

  

原文地址:https://www.cnblogs.com/jie-dcai/p/3948827.html