http://poj.org/problem?id=2891

解线性模方程组。

比较坑爹,数据比较大,很容易溢出。

  1 Program poj2891;
  2
  3 var m:int64;
  4
  5     a,r:array[1..30000000]of int64;
  6
  7     ans,x,y,lcm:int64;
  8
  9
 10  Procedure init;
 11
 12  var i,j:longint;
 13
 14   begin
 15
 16        m:=0;
 17
 18        readln(m);
 19
 20        for i:=1 to m do
 21
 22          readln(a[i],r[i]);
 23
 24   end;
 25
 26
 27  Function extended_gcd(a,b:int64;var x,y:int64):int64;
 28
 29  var k:int64;
 30
 31   begin
 32
 33       if b=0 then begin
 34
 35                      extended_gcd:=a;
 36
 37                      x:=1;y:=0;
 38
 39                   end
 40
 41              else begin
 42
 43                      extended_gcd:=extended_gcd(b,a mod b,x,y);
 44
 45                      k:=x;x:=y;y:=k-(a div b)*y;
 46
 47                   end;
 48
 49   end;
 50
 51
 52  Procedure print(ans:int64);
 53
 54   begin
 55
 56      writeln(ans);
 57
 58   end;
 59
 60
 61  Procedure main;
 62
 63  var i:longint;
 64
 65      d,ai,ri,k:int64;
 66
 67   begin
 68
 69      ans:=0;
 70
 71      ai:=a[1];ri:=r[1];
 72
 73      for i:=2 to m do
 74
 75       begin
 76
 77           d:=extended_gcd(ai,a[i],x,y);
 78
 79           lcm:=a[i]*ai div d;
 80
 81           if (r[i]-ri)mod d<>0 then begin print(-1);exit;end;
 82
 83           k:=((x mod a[i])*(r[i]-ri) mod a[i])div d;  //这个取余很重要,没有的话就会溢出,在这wa了好久
 84
 85           ri:=((ri+ai*k) mod lcm+lcm)mod lcm;
 86
 87           ai:=lcm;
 88
 89       end;
 90
 91      print(ri);
 92
 93   end;
 94
 95
 96 Begin
 97
 98     assign(input,'input.in');reset(input);
 99
100     assign(output,'output.out');rewrite(output);
101
102          while not(eof) do
103
104           begin
105
106              init;
107
108              if m<>0 then main;
109
110           end;
111
112     close(Input);close(Output);
113
114 end.

转载于:https://www.cnblogs.com/yesphet/p/5236495.html

poj 2891 Strange Way to Express Integers 2012-09-05相关推荐

  1. 数论练习1 ( 曹冲养猪 + [POJ 2891]Strange Way to Express Integers + 乘法逆元【带证明】)

    虽然作业还没有做完,但是我还是放不下它,对此,我只想说: 今天你对作业爱理不理,明天它就让你补到飞起 DP先放放,我们要雨露均沾 练习上手:乘法逆元 题目 题解 代码实现 曹冲养猪?(互质的中国剩余定 ...

  2. poj 2891 Strange Way to Express Integers

    题目:http://poj.org/problem?id=2891 思路:扩展欧几里得 #include <cstdio> #include <cstring> #includ ...

  3. POJ 2891 Strange Way to Express Integers ★ (扩展欧几里德解同余式组)

    题目链接:http://poj.org/problem?id=2891 题目大意: 很好的一道题,解同余式组: x = r1 (mod m1) x = r2 (mod m2) -- x = rp (m ...

  4. [POJ 2891] Strange Way to Express Integers

    Description 给定 k 个同余方程组,求出满足条件的最小正整数 x,或者无解输出 -1. Solution 注意到模数不一定互质,所以中国剩余定理不能用 嗯有请扩展中国剩余定理 定理证明就不 ...

  5. 【poj 2891】Strange Way to Express Integers(数论--拓展欧几里德 求解同余方程组 模版题)...

    题意:Elina看一本刘汝佳的书(O_O*),里面介绍了一种奇怪的方法表示一个非负整数 m .也就是有 k 对 ( ai , ri ) 可以这样表示--m%ai=ri.问 m 的最小值. 解法:拓展欧 ...

  6. 【poj2891】 Strange Way to Express Integers

    poj.org/problem?id=2891 (题目链接) 题意:求解线性同余方程组,不保证模数一定两两互质. Solotion 用exgcd将俩个同余方程合并成一个 如合并n%M=R,n%m=r ...

  7. [POJ2891] Strange Way to Express Integers

    题目描述 FJ正在读佳佳写的一本书,书中描述一种表示非负整数的方法:选择k个不同的正整数a1,a2,-,ak,对于某个整数m分别对ai求余对应整数ri,如果适当选择a1,a2,-,ak,那么整数m可由 ...

  8. POJ2891 Strange Way to Express Integers【扩展中国剩余定理】

    题目大意 就是模板...没啥好说的 思路 因为模数不互质,所以直接中国剩余定理肯定是不对的 然后就考虑怎么合并两个同余方程 \(ans = a_1 + x_1 * m_1 = a_2 + x_2 * ...

  9. poj-2891(Strange Way to Express Integers)--中国剩余定理扩展欧几里得

    题意:找到一个m,使得m%ai=ri,并且这个m最小 m = a1*x + r1; m = a2*y + r2; 可得:a1*x - a2*y = r2 - r1 可得:a1*x ≡ r2-r1(mo ...

最新文章

  1. R语言使用ggplot2包的快速可视化函数qplot绘制分组直方图(分组颜色设置)实战
  2. subplot subplots绘制子图
  3. aws-ec2-双网卡问题
  4. js点击取消按钮关闭当前弹框_UI设计中“取消按钮”的分析详解
  5. 【ubuntu】ubuntu下用make编译程序报错找不到openssl/conf.h
  6. 前端学习(2981):Json格式转换
  7. 科普 | “开放知识”的定义
  8. (转)分布式文件存储FastDFS(二)FastDFS安装
  9. Android实现小圆点显示未读功能
  10. android系统性能优化(13)---Android性能优化典范 - 第1季
  11. 用jquery在必填表单字段前加红星总结
  12. ef6 oracle 存储过程,Entity Framework入门教程(14)---DbFirst下的存储过程
  13. 2018青岛ICPC ZOJ 4061: Magic Multiplication(模拟)
  14. python决策树画图_利用python用iris做一个决策树的可视化更好的理解机器学习!...
  15. 胜为蓝牙适配器驱动_udc 324b蓝牙驱动下载-胜为udc 324b蓝牙适配器驱动(win7/win10)v6.5.1.2700 官方版 - 极光下载站...
  16. bias tee电路设计-电容电感值
  17. 计算机四个发展应用范围,计算机的四个发展阶段
  18. ansys转子动力学分析
  19. 说说我对[lambda x: x*i for i in range(4)]的理解
  20. Android常用库和插件避免重复造轮子(持续更新)

热门文章

  1. Jetty9.2.2集群Session共享
  2. tmux centos 6.3
  3. 分享python os.system一点心得
  4. Prometheus 由于时间不同步导致数据不显示
  5. 小程序分享朋友圈之填坑模式
  6. TOML-to-Go : 帮你快速生成 Go 结构体
  7. shell-1-命令与参数
  8. LNMP基础架构介绍与安装
  9. 给演讲增色的10种简单方法
  10. android 获取应用的当前版本号获取当前android系统的版本号