POJ - 2115 C Looooops(扩展欧几里得)
题目链接:点击查看
题目大意:执行一个循环:
for (variable = A; variable != B; variable += C)
statement;
问在2的k次幂的范围内最少需要执行多少次
题目分析:我们可以先利用同余方程列出公式:
进而可以化成这阵形式:
这样直接用拓展欧几里得求出X就是答案了
代码:
#include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=1e4+100;LL ex_gcd(LL a,LL b,LL &x,LL &y)
{if(b==0){x=1;y=0;return a;}LL ans=ex_gcd(b,a%b,y,x);y-=a/b*x;return ans;
}int main()
{
// freopen("input.txt","r",stdin);LL a,b,c,k;while(scanf("%lld%lld%lld%lld",&a,&b,&c,&k)!=EOF&&a+b+c+k){LL x,y;LL d=ex_gcd(c,1LL<<k,x,y);if((b-a)%d!=0)printf("FOREVER\n");else{LL ans=x*(b-a)/d;LL mod=(1LL<<k)/d;ans=(ans%mod+mod)%mod;printf("%lld\n",ans);}}return 0;
}
POJ - 2115 C Looooops(扩展欧几里得)相关推荐
- POJ 2115 C Looooops(扩展欧几里得)
辗转相除法(欧几里得算法) 时间复杂度:在O(logmax(a, b))以内 int gcd(int a, int b) {if (b == 0) return a;return gcd(b, a % ...
- POJ - 2142 The Balance(扩展欧几里得)
题目链接:点击查看 题目大意:给出两种重量的砝码,我们需要利用天平称出指定重量的药物,我们需要求出这两种砝码各自的数量,使得砝码数量之和最小 题目分析:我们可以先列出关系式,假设两个砝码的重量分别为a ...
- poj 2115 C Looooops(扩展欧几里德算法)
题意: 对于for(i=A ; i!=B ;i+=C)循环语句,问在k位存储系统中循环几次才会结束. 比如:当k=4时,存储的数 i 在0-15之间循环.(本题默认为无符号) 若在有限次内结束,则输出 ...
- 扩展欧几里得 POJ 1061
感觉这道题目的数据好水啊...我的代码我都觉得姿势特别奇怪...竟然还过了... 好吧,原来不是姿势奇怪,而是逆元需要用的时候是余数也需要的时候,这里的余数是不需要的,所以就AC了 就说一下碰到的问题 ...
- POJ - 1061 青蛙的约会(扩展欧几里得)
题目链接:点击查看 题目大意:两只青蛙在一个单向循环数轴上跳动,给出初始位置和每秒跳动的距离以及数轴长度,问是否可以相遇,若能相遇求出最小时间 题目分析:自从第一次接触扩展欧几里得以来已经有半年时间了 ...
- POJ 2142——扩展欧几里得
题目是很裸的扩展欧几里得,但是对x,y有限制条件,要求所有x,y中abs(x)+abs(y)最小,在这个条件下要求abs(a* x)+abs(b* y)最小 显然我们需要用扩展欧几里得求得一组解,问题 ...
- POJ 1061扩展欧几里得
扩展欧几里得的模板题,需要注意的是为了得到一个最小正数解我们要使ax+by=c中的a,b都是正数 #include<cstdio> #include<cstring> #inc ...
- POJ 1061 青蛙的约会 (扩展欧几里得)
青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 97673 Accepted: 18409 Descripti ...
- 求解线性同余方程--扩展欧几里得
资料来源:https://blog.csdn.net/ //求解ax=b(mod m) 返回0为无解,否则返回gcd(a,m)个mod m意义下的解,用X[]存 int mod(int a, int ...
最新文章
- JAVA中定义常量的几种方式
- [Winform]检测exe是否已经运行,并将其置顶
- python 私有和保护成员变量如何实现?—— 单下划线 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量; 双下划线 开始的是私有成员,意思是只有类对象自己能访问...
- jdbc链接数据库mysql
- DL之CNN:自定义SimpleConvNet【3层,im2col优化】利用mnist数据集实现手写数字识别多分类训练来评估模型
- 网络克隆报a:\ghosterr.txt故障解决一例
- windows自定义快速启动(运行)命令
- 关于 Cisco SCE 的介绍
- trigger_name 的命名规范
- 【文件包含、宏、条件编译】(学习笔记21--预处理命令)
- IDEA 2020 配置 Maven 创建 Spring Boot 项目
- 强烈推荐 | 算法/深度学习/NLP面试笔记
- js 将16进制转为字符串
- 为什么鸿蒙不掉符,教你如何使用鸿蒙符 鸿蒙符的挽歌一波流的逆袭
- Xilinx zynqmp USB开发
- excel 公式 TEXT/INDIRECT/ROW(XX)
- 汽车结构嵌件市场现状及未来发展趋势
- 列举MySQL事务的隔离级别_mysql dba系统学习(22)数据库事务详解
- 软件生命周期模型——瀑布模型
- 《思辨与立场》听书笔记