HDU 1788 Chinese remainder theorem again

题目链接

题意 : 中文题不详述。

思路 : 由N%Mi=(Mi-a)可得(N+a)%Mi=0;要取最小的N即找Mi的最小公倍数即可。

 //
#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#define LL long long using namespace std ; LL gcd(LL x,LL y)
{
return y == ? x : gcd(y,x%y) ;
}
int main()
{
int I,a ;
while(~scanf("%d %d",&I,&a))
{
if(I == && a == ) break ;
int x ;
LL ans = ;
while(I--)
{
scanf("%d",&x) ;
ans = (ans * x)/gcd(ans,x) ;
}
printf("%I64d\n",ans-a) ;
}
return ;
}
上一篇:Linux C编程学习之开发工具3---多文件项目管理、Makefile、一个通用的Makefile


下一篇:bzoj 3932 [CQOI2015]任务查询系统(主席树)