poj2115(扩展欧基里德定理)
题目链接:https://vjudge.net/problem/POJ-2115
题意:模拟for循环for(int i=A;i!=B;i+=C),且数据范围为k位无符号数以内,即0~1<<k-1,如果能循环为有限次则输出循环次数,否则输出FOREVER。
思路:典型的扩展欧基里德题。题意即求Cx=B-A (mod 1<<k),可化为Cx+(1<<k)y=B-A (mod 1<<k)。不访令a=C,b=1<<k,c=B-A,即求ax+by=c (mod b)的解x。根据扩展欧基里德定理,该方程有解的条件为gcd(a,b)|c。令d=gcd(a,b),则ax0+by0=d可通过扩展欧基里德计算得到x0,y0和d的值。则原问题的解x=(c/d*x0%(b/d)+b/d)%(b/d)。理由是,c/d*x0可能超出1<<k(b)的范围,注意到ax+by=d等价与a(x+m*b/d)+b(y-m*a/d)=d,m为任意值,即通过对b/d取模能得到最小非负整数解,因为可能为负值,所以取模后仍要加上b/d,并再次取模。
AC代码:
#include<cstdio>
using namespace std; typedef long long LL;
LL A,B,C,a,b,c,k; void ex_gcd(LL a,LL b,LL &x,LL &y,LL &d){
if(!b) x=,y=,d=a;
else{ex_gcd(b,a%b,y,x,d);y-=x*(a/b);}
} int main(){
while(~scanf("%lld%lld%lld%lld",&A,&B,&C,&k),k){
a=C,b=1LL<<k;c=(B-A)%b;
LL x,y,d;
ex_gcd(a,b,x,y,d);
if(c%d==)
printf("%lld\n",(c/d*x%(b/d)+b/d)%(b/d));
else printf("FOREVER\n");
}
return ;
}
poj2115(扩展欧基里德定理)的更多相关文章
- poj1061(扩展欧基里德定理)
题目链接:https://vjudge.net/problem/POJ-1061 题意:在一个首位相接的坐标轴上,A.B开始时分别位于X,Y处,每个单位时间向右移动m,n米,问是否能相遇,坐标轴长L. ...
- 【bzoj5028】小Z的加油店 扩展裴蜀定理+差分+线段树
题目描述 给出 $n$ 个瓶子和无限的水,每个瓶子有一定的容量.每次你可以将一个瓶子装满水,或将A瓶子内的水倒入B瓶子中直到A倒空或B倒满.$m$ 次操作,每次给 $[l,r]$ 内的瓶子容量增加 $ ...
- 【bzoj2257】[Jsoi2009]瓶子和燃料 扩展裴蜀定理+STL-map
题目描述 给出 $n$ 个瓶子和无限的水,每个瓶子有一定的容量.每次你可以将一个瓶子装满水,或将A瓶子内的水倒入B瓶子中直到A倒空或B倒满.从中选出 $k$ 个瓶子,使得能够通过这 $k$ 个瓶子凑出 ...
- 【bzoj1441】Min 扩展裴蜀定理
题目描述 给出n个数(A1...An)现求一组整数序列(X1...Xn)使得S=A1*X1+...An*Xn>0,且S的值最小 输入 第一行给出数字N,代表有N个数 下面一行给出N个数 输出 S ...
- [洛谷P4777] [模板] 扩展中国剩余定理
扩展中国剩余定理,EXCRT. 题目传送门 重温一下中国剩余定理. 中国剩余定理常被用来解线性同余方程组: x≡a[1] (mod m[1]) x≡a[2] (mod m[2]) ...... x≡a ...
- POJ2115(扩展欧几里得)
C Looooops Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 23700 Accepted: 6550 Descr ...
- 学习笔记 - 中国剩余定理&扩展中国剩余定理
中国剩余定理&扩展中国剩余定理 NOIP考完回机房填坑 ◌ 中国剩余定理 处理一类相较扩展中国剩余定理更特殊的问题: 在这里要求 对于任意i,j(i≠j),gcd(mi,mj)=1 (就是互素 ...
- poj2115[扩展欧几里德]
C Looooops Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22260 Accepted: 6125 Descr ...
- 2019牛客暑期多校训练营(第十场)Han Xin and His Troops——扩展中国剩余定理
题意 求解 $n$ 个模方程 $x \equiv a (mod \ b)$,不保证模数互素($1 \leq n \leq 100$,$0 \leq b < a< 10^5$). 分析 套扩 ...
随机推荐
- mysql与mysqli的区别
博客搬家了,欢迎大家关注,https://bobjin.com mysqli连接是永久连接,而MySQL是非永久连接. mysql连接:每当第二次使用的时候,都会重新打开一个新的进程. mysqli连 ...
- Linux 系统下使用dd命令备份还原MBR主引导记录
https://en.wikipedia.org/wiki/Master_boot_recordhttps://www.cyberciti.biz/faq/howto-copy-mbr/https:/ ...
- msm8909平台JEITA配置和bat-V therm表合入
8909平台的冷热充电温度点是硬件控制的,不能软件控制,目前硬件设置的是0~55度的充电区间. 软件上应该设置的是BTM comparator threshold, 70%(cold)~35%(hot ...
- 使用vsftp服务传输文件
- POJ2376 Cleaning Shifts
题意 POJ2376 Cleaning Shifts 0x50「动态规划」例题 http://bailian.openjudge.cn/practice/2376 总时间限制: 1000ms 内存限制 ...
- CNN+BLSTM+CTC的验证码识别从训练到部署
项目地址:https://github.com/kerlomz/captcha_trainer 1. 前言 本项目适用于Python3.6,GPU>=NVIDIA GTX1050Ti,原mast ...
- Tomcat虚拟根目录与虚拟目录
tomcat版本:apache-tomcat-7.0.42 参考:http://blog.csdn.net/pangdingshan/article/details/7214786 一.虚拟根目录 1 ...
- java-启动和关闭.exe程序
链接: https://www.cnblogs.com/pengpengzhang/p/8675740.html https://blog.csdn.net/ZHANGHUI3239619/artic ...
- SVN 撤回已提交的代码
1. TortoiseSVN -----> Show log 2.右键点击你想撤回的提交 -> Revert changes from this revision ----->Rev ...
- 使用pageoffice进行多个文档的合并
提前给test模板文件中 手动插入一个书签,因为pageoffice必须有一个书签后,才能在后台进行书签的创建 //多个word文件进行合并 string strCopyFolder = System ...