poj 2115 C Looooops
来源:互联网 发布:win7指纹加密软件 编辑:程序博客网 时间:2024/05/19 23:53
// 推广的欧几里德算法
#include <iostream>
using namespace std;
__int64 exgcd(__int64 a,__int64 b,__int64 &x,__int64 &y)
{
if (b==0)
{
x=1;y=0;
return a;
}
__int64 d=exgcd(b,a%b,x,y);
__int64 temp=x;
x=y;
y=temp-(a/b)*y;
return d;
}
int main()
{
__int64 a,b,c,k;
while (scanf("%I64d%I64d%I64d%I64d",&a,&b,&c,&k) )
{
if (!a && !b && !c && !k) break;
if (a==b)
{
printf("0/n");
continue;
}
if (c==0)
{
printf("FOREVER/n");
continue;
}
__int64 B=c;
__int64 A=(__int64)1<<k;
__int64 C=b-a;
__int64 x,y;
__int64 d=exgcd(A,B,x,y);
if (C%d) //无解的情况(可以查看算法导论)
{
printf("FOREVER/n");
continue;
}
y=(y*(C/d))%A; //得到第一个解
__int64 t=A/d;
y=(y%t+t)%t; //C++的%运算符好像对负数的模运算会先算绝对值再把负号加上去
//用这个式子可以保证得到最小的正余数
printf("%I64d/n",y);
}
return 0;
}
- 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 C Looooops
- POJ 2115 C Looooops
- POJ 2115 C Looooops
- POJ 2115 C Looooops
- POJ 2115--C Looooops
- 重新启用
- asp.net mvc 1
- sql批量导入 之整理贴
- http://acm.hdu.edu.cn/showproblem.php?pid=2688 数状数组 线段树
- flash 人才需求在增长
- poj 2115 C Looooops
- vim pic
- poj 1276 Cash Machine
- TFS2010-Closed the problem of Installing tfs> configured >review > [sharepoint] display [failed]
- 嵌套类(嵌套类、结构和枚举的作用域特征——图)
- poj 1160 Post Office
- poj 1088 滑雪
- 最佳匹配KM算法模板
- jsp 常用命令