百练 2793:孙子问题
2015-08-10 11:19
267 查看
http://bailian.openjudge.cn/practice/2793/
#include<cmath> #include<iostream> using namespace std; long EE(long a,long b,long &x,long &y){ //extend eulid long d; if(b==0){ x=1;y=0; return a; } d=EE(b,a%b,x,y); long t=x; x=y; y=t-a/b*y; return d; } int main(){ long lcm,g,gcd,r,rem,x,y,a[10],k[10],p[10],q[11],gc[10],gd[10],res[10]; int n; while(cin>>n){ if(n==0) break; int i; for(i=0;i<n;i++) cin>>a[i]; lcm=a[0]; for(i=0;i<n;i++) lcm=lcm/EE(lcm,a[i],x,y)*a[i]; for(i=0;i<n;i++) p[i]=q[i]=lcm/a[i]; q[n]=lcm; g=p[n-1]; gc[n-1]=lcm; for(i=n-1;i>0;i--){ gc[i-1]=EE(g,p[i],x,y); g=gc[i-1]; } for(i=0;i<n;i++) gd[i]=gc[i]; rem=1; for(i=0;i<n;i++){ gcd=EE(p[i],gc[i],x,y); q[i]/=gcd; gd[i]/=gcd; r=rem; while(r<0) r+=lcm; r/=gcd; r%=gd[i]; EE(q[i],gd[i],x,y); k[i]=r*x; while(k[i]<=0) k[i]+=a[i]; res[i]=p[i]; res[i]*=k[i]; rem-=res[i]; } for(i=0;i<n;i++) cout<<res[i]<<" "; cout<<endl; } return 0; }
相关文章推荐
- ios百度地图的使用(普通定位、反地理编码)
- Mac下安装android 环境
- 图像处理与计算机视觉 基础、经典以及最近发展
- bootstrap 下拉菜单两种实现方案
- 几种排序算法
- Multiple markers at this line @Override的解决方法
- AdaBoost--从原理到实现
- 网络编程系列之十二 codeblocks导入makefile工程
- 程序员业余项目死亡的原因
- O_APPEND的含义
- SQL 错误: ORA-00972: 标识符过长
- 百练 2807:两倍
- 黑马程序员——JavaBean
- jmeter 控制器
- sed工具命令
- CSS圆角,输入框提示信息,JS查找同级元素
- 我关注的一周技术动态
- IOS 获取所有图片工具类
- Tomcat优化配置
- 仿微信按返回键app退到后台,并在通知栏里显示