poj2115 C Looooops(exgcd)】的更多相关文章

poj2115 C Looooops 题意: 对于C的for(i=A ; i!=B ;i +=C)循环语句,问在k位存储系统中循环几次才会结束. 若在有限次内结束,则输出循环次数. 否则输出死循环. (k位==mod $2^{k}$) 列出方程:$A+Cx\equiv B(mode\quad 2^{k})$ 转换一下:$Cx+ky=B-A$ 用exgcd解出 $Cx+ky=gcd(C,k)$ 然后把求出的$x*(B-A)/gcd(C,k)$ 再$\% (k/gcd(C,k))$求个最小正整数解…
C Looooops Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 24355   Accepted: 6788 Description A Compiler Mystery: We are given a C-language style for loop of type for (variable = A; variable != B; variable += C) statement; I.e., a loop w…
C Looooops DescriptionA Compiler Mystery: We are given a C-language style for loop of type for (variable = A; variable != B; variable += C) statement;I.e., a loop which starts by setting variable to value A and while variable is not equal to B, repea…
C Looooops Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22704 Accepted: 6251 Description A Compiler Mystery: We are given a C-language style for loop of type for (variable = A; variable != B; variable += C) statement; I.e., a loop which…
C Looooops Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 29262   Accepted: 8441 Description A Compiler Mystery: We are given a C-language style for loop of type for (variable = A; variable != B; variable += C) statement; I.e., a loop w…
题目链接:http://poj.org/problem?id=2115 C Looooops Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 27838   Accepted: 7930 Description A Compiler Mystery: We are given a C-language style for loop of type for (variable = A; variable != B; vari…
无符号k位数溢出就相当于mod 2k,然后设循环x次A等于B,就可以列出方程: $$ Cx+A \equiv B \pmod {2^k} $$ $$ Cx \equiv B-A \pmod {2^k} $$ 最后就用扩展欧几里得算法求出这个线性同余方程的最小非负整数解. #include<cstdio> #include<cstring> #define mod(x,y) (((x)%(y)+(y))%(y)) #define ll long long ll exgcd(ll a,…
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ2115 题意 对于C的for(i=A ; i!=B ;i +=C)循环语句,问在k位存储系统中循环几次才会结束.若在有限次内结束,则输出循环次数.否则输出死循环. 题解 原题题意再次缩略: A + xC Ξ B (mod 2k) 求x的最小正整数值. 我们把式子稍微变一下形: Cx + (2k)y = B-A 然后就变成了一个基础的二元一次方程求解,扩展欧几里德套套就可以了. 至于扩展欧几里德(ex…
题意大概是让你求(A+Cx) mod 2^k = B的最小非负整数解. 若(B-A) mod gcd(C,2^k) = 0,就有解,否则无解. 式子可以化成Cx + 2^k*y = B - A,可以用扩展欧几里得得到一组解. 设M=gcd(C,2^k),X=x*(B-A)/M 要想得到最小非负整数解的话,就是(X%(L/M)+L/M)%(L/M). 证明略. #include<cstdio> #include<algorithm> #include<iostream>…
题目:http://poj.org/problem?id=2115 exgcd裸题.注意最后各种%b.注意打出正确的exgcd板子.就是别忘了/=g. #include<iostream> #include<cstdio> #include<cstring> #define ll long long using namespace std; ll a,b,x,y,r,A,B,C,k,g; ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}…