博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2115 C Looooops (扩展欧几里德解同余方程 Ax = B(mod C) )
阅读量:5279 次
发布时间:2019-06-14

本文共 1181 字,大约阅读时间需要 3 分钟。

题目链接
题目大意:C语言循环语句,初试i赋值A,每次加C,并且模2^k,当i == B时终止,问终止循环次数,或者无法终止.
思路: 思路比较简单的一道题,解方程CX + A = B (mod 2^k)即可,变形一下:CX = B - A (mod 2^k)  
#include #include using namespace std;long long gcd(long long a, long long b){    return b ? gcd(b, a%b) : a;}void ext_gcd(long long a, long long b, long long &x, long long &y){    if (b == 0){        x = 1;        y = 0;        return ;    }    ext_gcd(b, a%b, x, y);    long long tmp = x;    x = y;    y = tmp - a / b * y;    return ;}bool equalation(long long a, long long b, long long c, long long &x, long long &y){    long long g = gcd(a, b);    if (c % g != 0){        return false;    }    a /= g;    b /= g;    c /= g;    ext_gcd(a, b, x, y);    x *= c;    long long tmp = abs(double(b));    x = (x % tmp + tmp) % tmp;    return true;}int main(){    long long a, b, c, k, m;    while(cin >> a >> b >> c >> k){        if (a + b + c + k == 0){            return 0;        }        m = 1LL << k;        long long x, y;        if (equalation(c, m, b-a, x, y)){            cout << x << endl;        }        else{            cout << "FOREVERn";        }    }    return 0;}
 

转载于:https://www.cnblogs.com/AbandonZHANG/archive/2013/01/10/4114195.html

你可能感兴趣的文章
【京东咚咚架构演进】-- 好文收藏
查看>>
【HTML】网页中如何让DIV在网页滚动到特定位置时出现
查看>>
文件序列化
查看>>
jQuery之end()和pushStack()
查看>>
Bootstrap--响应式导航条布局
查看>>
Learning Python 009 dict(字典)和 set
查看>>
JavaScript中随着鼠标拖拽而移动的块
查看>>
HDU 1021 一道水题
查看>>
The operation couldn’t be completed. (LaunchServicesError error 0.)
查看>>
php每天一题:strlen()与mb_strlen()的作用分别是什么
查看>>
工作中收集JSCRIPT代码之(下拉框篇)
查看>>
《转载》POI导出excel日期格式
查看>>
code异常处理
查看>>
git - 搭建最简单的git server
查看>>
会话控制
查看>>
推荐一款UI设计软件Balsamiq Mockups
查看>>
Linux crontab 命令格式与详细例子
查看>>
百度地图Api进阶教程-地图鼠标左右键操作实例和鼠标样式6.html
查看>>
游标使用
查看>>
LLBL Gen Pro 设计器使用指南
查看>>