题目地址:POJ 2115

水题。

公式非常好推。最直接的公式就是a+n*c==b+m*2^k.然后能够变形为模线性方程的样子,就是

n*c+m*2^k==b-a.即求n*c==(b-a)mod(2^k)的最小解。(真搞不懂为什么训练的时候好多人把青蛙的约会都给做出来了,这题却一直做不出来。。

这两道不都是推公式然后变形吗。

。。。。

代码例如以下:

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <queue>
#include <map>
#include <set>
#include <algorithm> using namespace std;
#define LL __int64
LL X, Y;
LL exgcd(LL a,LL b)
{
if(b==0)
{
X=1;
Y=0;
return a;
}
LL r=exgcd(b,a%b);
LL t=X;
X=Y;
Y=t-a/b*Y;
return r;
}
int main()
{
LL a, b, c, k, d, L, z;
while(scanf("%I64d%I64d%I64d%I64d",&a,&b,&c,&k)!=EOF&&k)
{
z=pow(2,k);
d=exgcd(c,z);
L=b-a;
if(L%d)
{
printf("FOREVER\n");
continue ;
}
else
{
LL ans=X*L/d;
LL s=z/d;
if(ans<0)
{
ans=ans%s+s;
}
else
{
ans=ans%s;
}
printf("%I64d\n",ans);
}
}
return 0;
}

POJ 2115 C Looooops(扩展欧几里得应用)的更多相关文章

  1. POJ 2115 C Looooops(扩展欧几里得)

    辗转相除法(欧几里得算法) 时间复杂度:在O(logmax(a, b))以内 int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a ...

  2. POJ 2115 C Looooops扩展欧几里得

    题意不难理解,看了后就能得出下列式子: (A+C*x-B)mod(2^k)=0 即(C*x)mod(2^k)=(B-A)mod(2^k) 利用模线性方程(线性同余方程)即可求解 模板直达车 #incl ...

  3. poj2115 C Looooops——扩展欧几里得

    题目:http://poj.org/problem?id=2115 就是扩展欧几里得呗: 然而忘记除公约数... 代码如下: #include<iostream> #include< ...

  4. C Looooops(扩展欧几里得+模线性方程)

    http://poj.org/problem?id=2115 题意:给出A,B,C和k(k表示变量是在k位机下的无符号整数),判断循环次数,不能终止输出"FOREVER". 即转化 ...

  5. POJ 2142 - The Balance [ 扩展欧几里得 ]

    题意: 给定 a b n找到满足ax+by=n 的x,y 令|x|+|y|最小(等时令a|x|+b|y|最小) 分析: 算法一定是扩展欧几里得. 最小的时候一定是 x 是最小正值 或者 y 是最小正值 ...

  6. POJ - 2115C Looooops 扩展欧几里得(做的少了无法一眼看出)

    题目大意&&分析: for (variable = A; variable != B; variable += C) statement;这个循环式子表示a+c*n(n为整数)==b是 ...

  7. poj 2115 C Looooops 扩展欧几里德

    C Looooops Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 23616   Accepted: 6517 Descr ...

  8. POJ2115 C Looooops[扩展欧几里得]

    C Looooops Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 24355   Accepted: 6788 Descr ...

  9. C Looooops(扩展欧几里得)

    C Looooops Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20128 Accepted: 5405 Descripti ...

随机推荐

  1. U+00A0 (Non-breaking space)无法被正确压缩

    Code Glyph Decimal HTML Description #U+00A0     Non-breaking space 0096 https://zh.wikipedia.org/wik ...

  2. Flask web开发 处理POST请求(登录案例)

    本文我们以一个登录例子来说明Flask对 post请求的处理机制. 1.创建应用目录,如 mkdir   example cd example 2.在应用目录下创建  run.py文件,内容如下 fr ...

  3. 一起学习CMake – 02

    本节介绍如何用CMake来设置软件的版本号 在<一起学习CMake - 01>中我们看到了如何用CMakeLists.txt来构建一个最简单的工程,这一节里我们一起来看看如何用CMake对 ...

  4. 比较优势 - MBA智库百科

    比较优势 - MBA智库百科 比较优势 出自 MBA智库百科(http://wiki.mbalib.com/)   这是一个消除歧义页--使用相同或相近标题,而主题不同的条目列表.如果您是通过某个内部 ...

  5. oracle expdp和impdp使用例子

    情景: 由于生产需求,需要把rmtel用户的数据完全复制一份给rmtel_xzy,但排除rmtel用户 ('CAB_JJXPORT_TAB','T_SERVICEXX','TB_CROSSCONNEC ...

  6. BZOJ 2318: Spoj4060 game with probability Problem( 概率dp )

    概率dp... http://blog.csdn.net/Vmurder/article/details/46467899 ( from : [辗转山河弋流歌 by 空灰冰魂] ) 这个讲得很好 , ...

  7. 说说关于php内置函数curl_init()

    昨天在我本地的项目,调试时碰到无法识别curl_init()方法,网上查了查才知道是我本地的php.ini文件里没加载上,完了把extension=php_curl.dll前面的;去掉后就好了,注意一 ...

  8. android页面切换效果

    两种方式: 在activity的自定义主题中定义切换方式: overridePendingTransition()方法 自定义主题: 在项目的res/values/styles.xml中添加样式 &l ...

  9. iTextSharp - 建立PDF文件

    原文 iTextSharp - 建立PDF文件 01 using iTextSharp.text; 02 using iTextSharp.text.pdf; 03 ... 04 private vo ...

  10. perl oracle utf-8 结果匹配中文字符

    [oracle@oadb sbin]$ cat s1.pl #!/usr/bin/perl use DBI; use Encode; use HTTP::Date qw(time2iso str2ti ...