POJ2115 C Looooops(线性同余方程)
2016-02-03 19:50
363 查看
无符号k位数溢出就相当于mod 2k,然后设循环x次A等于B,就可以列出方程:
$$ Cx+A \equiv B \pmod {2^k} $$ $$ Cx \equiv B-A \pmod {2^k} $$
最后就用扩展欧几里得算法求出这个线性同余方程的最小非负整数解。
$$ Cx+A \equiv B \pmod {2^k} $$ $$ Cx \equiv B-A \pmod {2^k} $$
最后就用扩展欧几里得算法求出这个线性同余方程的最小非负整数解。
#include<cstdio> #include<cstring> #define mod(x,y) (((x)%(y)+(y))%(y)) #define ll long long ll exgcd(ll a,ll b,ll &x,ll &y){ if(b==0){ x=1; y=0; return a; } ll d=exgcd(b,a%b,x,y); ll t=y; y=x-a/b*y; x=t; return d; } ll MLES(ll a,ll b,ll n){ ll x,y; ll d=exgcd(a,n,x,y); if(b%d) return -1; return mod(x*(b/d),n/d); } int main(){ ll a,b,c,k; while(~scanf("%lld%lld%lld%lld",&a,&b,&c,&k) && (a||b||c||k)){ k=1LL<<k; ll res=MLES(c,b-a,k); if(res==-1) puts("FOREVER"); else printf("%lld\n",res); } return 0; }
相关文章推荐
- Hadoop 之 Combiner 与自定义 Combiner
- 初学Java Web,搭建开发环境(Eclipse+Tomcat+MySQL)
- cvEqualizeHist() 直方图均衡化(单通道)
- Android基本架构
- 设置tomcat的默认jdk
- 一些OJ网站
- 基于 Eclipse + Tomcat 的 Java Servlet Web 开发环境搭建与配置
- centos搭建svn
- 解决504 Gateway Time-out(nginx)
- 【大型网站技术架构笔记】(一)演化过程
- linux安装mysql客户端问题总结
- 在linux环境中安装rabbitmq出现的错误
- 多并发系统架构的一些优化思路
- 备忘启动jetty后log中不断交替出现Connector vm://localhost Started/Stopped
- Nginx出现413 Request Entity Too Large错误解决方法
- Jenkins进阶系列之——09配置Linux系统ssh免密码登陆
- Meteor应用架构 — Mantra概述
- HBase笔记 - 常用Shell命令
- shell脚本ssh自动登陆服务器
- 如何导入导出sitescope数据