POJ2115 C Looooops(拓展欧几里德)
来源:互联网 发布:h3c路由器封端口 编辑:程序博客网 时间:2024/05/22 00:38
题意:
要求a不断加c到达b,如果a大于2^k就mod2^k,求最少要加几次c。
要点:
拓展欧几里德算法求最小整数解,就是个模板。不过要注意计算2^k时因为超出int范围所以必须先强制类型转换:(__int64)1 << k。
#include<stdio.h>#include<string.h>#include<stdlib.h>__int64 e_gcd(__int64 a, __int64 b, __int64 &x, __int64 &y){__int64 ans, temp;if (b == 0){x = 1; y = 0;return a;}ans = e_gcd(b, a%b, x, y);temp = x;x = y;y = temp - a / b*y;return ans;}int main(){__int64 a, b, c,d,k,xx,yy,r,num;while (scanf("%I64d%I64d%I64d%I64d", &a, &b, &c, &k)){if (!a && !b && !c && !k)break;num = (__int64)1 << k;//这里要强制类型转换,毕竟有个1不是__int64型的d = e_gcd(c, num, xx, yy);if ((b - a) % d != 0)printf("FOREVER\n");else{xx *= (b - a) / d;r = num / d;xx = (xx%r + r) % r;printf("%I64d\n", xx);}}return 0;}
0 0
- POJ2115 C Looooops(拓展欧几里德)
- 欧几里德 poj2115 C Looooops
- C Looooops(欧几里德+poj2115)
- poj2115 C Looooops (欧几里德)
- poj2115 Looooops 扩展欧几里德
- poj2115 Looooops(扩展欧几里德模板)
- poj 2115 C Looooops 拓展欧几里德定理
- POJ 2115 C Looooops(拓展欧几里德)
- PKU 2115 C Looooops(拓展欧几里德)
- poj2115C Looooops 拓展欧几里德
- POJ2115 C Looooops
- POJ2115-C Looooops
- [POJ2115] C Looooops
- #POJ2115# C Looooops
- POJ2115-C Looooops
- POJ2115 C Looooops
- poj2115 Looooops 扩展欧几里德的应用
- poj 2115 C Looooops 拓展欧几里德 解模线性方程模板
- Eclipse的debug调试技巧
- lua 函数库汇总
- 南京理工大学第八届程序设计大赛count_prime
- 卷积神经网络-图像卷积的概念
- Python virtualenv安装库报错SSL: CERTIFICATE_VERIFY_FAILED
- POJ2115 C Looooops(拓展欧几里德)
- CI中的路由规则
- 【LeetCode】LeetCode——第4题:Median of Two Sorted Arrays
- HelloChart--PreviewChartView(预览统计图)
- DataPickerView最简单用法。。直接拿过去用就行
- iOS NSString 截取,objectAtIndex,rangeOfString,stringWithContentsOfFile,NSEnumerator
- cocos2dx 安卓makefile Android.mk,动态引用cpp地址
- IOS路线图
- 把makefile 需要编译的源码编译全部删除或者重命名会怎么样?