poj 2115||zoj2305(扩展欧几里德)
来源:互联网 发布:lofter个性域名怎么弄 编辑:程序博客网 时间:2024/05/21 19:21
/*
n=2^k给你三个数满足(a+c*t)%n=b,q求t,
即c*t+x*n==b-a, (式子1)
可以发现满足扩展欧几里德的定理,
则x*c+n*y=d; (式子2)
if((b-a+n)%n % d !=0) ,无解。。
else t=(x/d)*(b-a);
*/
#include"stdio.h"#include"string.h"typedef long long LL;//typedef __int64 LL;LL x,y,d;void exgcd(LL a,LL b){if(b==0){x=1;y=0;d=a;}else {exgcd(b,a%b);LL t=x;x=y;y=t-(a/b)*y;}}int main(){LL a,b,c,k;//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);while(scanf("%I64d%I64d%I64d%I64d",&a,&b,&c,&k)!=-1){if(a==0&&b==0&&c==0&&k==0)break;if(a==b){printf("0\n");continue;}LL n=1;for(int i=0;i<k;i++)n*=2;LL ans=(b-a+n)%n;exgcd(c,n);if(ans%d)printf("FOREVER\n");else {ans/=d;c/=d;n/=d;x=x*ans;x%=n;if(x<0)x=(x+n)%n;printf("%I64d\n",x);}}return 0;}
- poj 2115||zoj2305(扩展欧几里德)
- poj 2115 扩展欧几里德
- POJ 2115 C Looooops(扩展欧几里德)
- POJ 2115(扩展欧几里德定理)
- POJ 2115 C Looooops(扩展欧几里德)
- POJ 2115 C Looooops(扩展欧几里德 + 求解模线性方程)
- poj-2115-C Looooops-扩展欧几里德
- poj 2115 C Looooops 扩展欧几里德算法
- poj-2115-C Looooops-扩展欧几里德
- poj-2115-C Looooops-扩展欧几里德
- POJ 2115-C Looooops(扩展欧几里德)
- POJ 2115- C Looooops(扩展欧几里德)
- 【POJ 2115】 C Looooops (扩展欧几里德)
- POJ-2115-C Looooops-扩展欧几里德算法
- POJ 2115-C Looooops-扩展欧几里德算法
- poj 2115 C Looooops(扩展欧几里德)
- poj 2115 C Looooops (扩展欧几里德)
- POJ 2115 Looooops 扩展欧几里德 Java
- 用C语言编写贪吃蛇代码(难度可选)
- gdbserver 调试时gdb运行c时崩溃不能正常调试
- Android-----WebView使用
- C/C++基本数据类型所占字节数
- 爱加密:解析APP开发团队生存难题
- poj 2115||zoj2305(扩展欧几里德)
- 《程序员》 -- 并轨国际,中国开源基金会即将扬帆起航——记中国开源基金会微峰会
- 仿百度搜索的文本框(第二种实现ajax联想查询的文本框)
- pthread_create用法
- 编码分类
- 基于Visual C++2013拆解世界五百强面试题--题11-查找数字出现次数
- java自学笔记之面向对象多态
- JTextField利用setDocument方式来设置文本框输入的内容
- ubuntu下hadoop源代码安装