POJ-2115
来源:互联网 发布:水泥掺量20 算法 编辑:程序博客网 时间:2024/05/02 06:50
// 356K 0MS G++ #include <stdio.h>#include <string.h>long long EXTENDED_EUCLID(long long a,long long b,long long& x,long long& y) { if(b==0) { x=1; y=0; return a; } long long d = EXTENDED_EUCLID(b,a%b,x,y); long long xt = x; x=y; y=xt-a/b*y; return d;}int main(void){ long long A,B,C,k; while(scanf("%lld %lld %lld %lld", &A,&B,&C,&k)) { if(!A && !B && !C && !k) { break; } long long a = C; long long b = B-A; long long n = (long long)1<<k; long long x,y; long long d = EXTENDED_EUCLID(a,n,x,y); if (b%d != 0) { printf("FOREVER\n"); } else { x = (x*(b/d))%n; x = (x%(n/d)+n/d)%(n/d); printf("%lld\n", x); } } return 0;}
好的题解:
http://blog.csdn.net/lyy289065406/article/details/6648546
数论的题很多完全是靠公式,转化难度其实不大,这道题中,设经过X步C以后,可以从A 到 B,
那么因为存在溢出(溢出在这里其实就是求余了)的情况, 那么有 (A + XC)% 2的K次方 = B, 这是一个模线性等式,其他的参考上面的题解,已经很清楚了.
0 0
- POJ 2115
- POJ 2115
- poj 2115
- poj 2115
- poj-2115
- POJ-2115
- POJ 2115
- poj 2115
- poj 1061 + poj 2115 + poj 2142 (exgcd)
- POJ 1061 + POJ 2115 (求模线性方程)
- 扩展欧几里得(poj 2115 poj 1061)
- poj 2115 C Looooops
- POJ 2115 C Looooops
- POJ 2115 C Looooops
- POJ 2115 C Looooops
- POJ 2115 扩展欧几里得
- POJ 2115 C Looooops
- POJ 2115 C Looooops
- Windows下Console和Win32程序差异
- ZOJ3798:Abs Problem
- POI运用Excel模板打印报表
- FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask
- 平均背景法提取前景
- POJ-2115
- 程序员生存定律-打造属于自己的稀缺性
- Spring@Autowired注解与自动装配 .
- Codeforces 148E Porcelain [预处理+dp背包]
- 图灵机器人下载地址
- 一个小命令查看centos 是什么多少位系统
- Cinder
- Play Framework框架 JPA惯用注解
- iOS 正确选择图片加载方式