寒假做的题了,先贴那时写的代码。

POJ 1061

#include<iostream>
#include<cstdio>
typedef long long LL;
using namespace std; void extend_gcd(LL a,LL b,LL &d,LL &x,LL &y)
{
if(b==0)
{
d=a;
x=1,y=0;
}
else
{
extend_gcd(b,a%b,d,y,x);
y-=x*(a/b);
}
} int main()
{
LL x,y,m,n,L;
while(scanf("%I64d%I64d%I64d%I64d%I64d",&x,&y,&m,&n,&L)!=EOF)
{
LL d,xx,yy;
extend_gcd(n-m,L,d,xx,yy);
if((x-y)%d==0)
{
LL p=L/d;
xx=(x-y)/d*xx;
xx=(xx%p+p)%p;
printf("%I64d\n",xx);
}
else printf("Impossible\n");
}
return 0;
}

POJ 2115

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<string>
#include<cstdlib>
#include<vector>
#include<stack>
#include<map>
using namespace std;
typedef long long ll; ll extend_gcd(ll a,ll b,ll &x,ll &y)
{ //return d=gcd(a,n);
if(b==0)
{
x=1,y=0;
return a;
}
else
{
ll t=extend_gcd(b,a%b,x,y);
ll xx=x,yy=y;
x=yy;
y=xx-(a/b)*yy;
return t;
}
} int main()
{
ll A,B,C,k,x,y;
while(~scanf("%I64d %I64d %I64d %I64d",&A,&B,&C,&k))
{
if(A==0&&B==0&&C==0&&k==0) break;
ll a=C,b=B-A,n=(ll)1<<k; //n=2^k
ll d=extend_gcd(a,n,x,y); if(b%d!=0) //方程无解
printf("FOREVER\n");
else
{
x=(x*(b/d))%n; //x为方程ax=b(mod n)的最小解
x=(x%(n/d)+n/d)%(n/d); //x为方程ax=b(mod n)的最小整数解
printf("%I64d\n",x);
}
}
return 0;
}

POJ 2891

#include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll; void extend_gcd(ll a,ll b,ll &d,ll &x,ll &y)
{
if(b==0)
{
d=a;
x=1,y=0;
}
else
{
extend_gcd(b,a%b,d,y,x);
y-=x*(a/b);
}
} int main()
{
int k;
ll a1,r1,a,r;
while(~scanf("%d",&k))
{
scanf("%I64d%I64d",&a1,&r1);
int flag=1;
for(int i=2;i<=k;i++)
{
scanf("%I64d%I64d",&a,&r);
ll d,x,y;
extend_gcd(a1,a,d,x,y);
if((r-r1)%d!=0)
flag=0;
ll p=a/d;
x=(r-r1)/d*x;
x=(x%p+p)%p;
r1=a1*x+r1;
a1=a1*(a/d);
}
if(flag)
printf("%I64d\n",r1);
else printf("-1\n");
}
return 0;
}

数学#扩展欧几里德 POJ 1061&2115&2891的更多相关文章

  1. 扩展欧几里德 POJ 1061

    欧几里德的是来求最大公约数的,扩展欧几里德,基于欧几里德实现了一种扩展,是用来在已知a, b求解一组x,y使得ax+by = Gcd(a, b) =d(解一定存在,根据数论中的相关定理,证明是用裴蜀定 ...

  2. poj 1061 青蛙约会(扩展欧几里德)

    题目链接: http://poj.org/problem?id=1061 题目大意: 中文题目,题意一目了然,就是数据范围大的出奇. 解题思路: 假设两只青蛙都跳了T次,可以列出来不定方程:p*l + ...

  3. ACM: POJ 1061 青蛙的约会 -数论专题-扩展欧几里德

    POJ 1061 青蛙的约会 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%lld & %llu  Descr ...

  4. POJ 1061 青蛙的约会(扩展欧几里德)

    点我看题目 题意 : 中文题不详述. 思路 : 设经过s步后两青蛙相遇,则必满足(x+m*s)-(y+n*s) = K*L(k = 0,1,2....) 变形得:(n-m)*s+K*L = x-y ; ...

  5. POJ 2891 扩展欧几里德

    这个题乍一看跟剩余定理似的,但是它不满足两两互素的条件,所以不能用剩余定理,也是给了一组同余方程,找出一个X满足这些方程,如果找不到的话就输出-1 因为它不满足互素的条件,所以两个两个的合并,最后合成 ...

  6. POJ 1061 青蛙的约会(扩展欧几里德算法)

    题意:两只青蛙在同一个纬度上跳跃,给定每个青蛙的开始坐标和每秒跳几个单位,纬度长为L,求它们相遇的最短时间. 析:开始,一看只有一组数据,就想模拟一下,觉得应该不会超时,但是不幸的是TLE了,我知道这 ...

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

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

  8. POJ - 2115 C Looooops(扩展欧几里德求解模线性方程(线性同余方程))

    d.对于这个循环, for (variable = A; variable != B; variable += C) statement; 给出A,B,C,求在k位存储系统下的循环次数. 例如k=4时 ...

  9. poj 1061 青蛙的约会 (扩展欧几里得模板)

    青蛙的约会 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit Status ...

随机推荐

  1. shell-正则表达式

    证则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容.许多程序设计 ...

  2. GTK+2.0学习——C指针回顾

    工作需要,开始做GTK,但是很久没碰C了,来捡一下C的精华. 一.*和&的意义 *:指针运算符 &:取地址运算符 两者优先级一样,从右向左方向结合 二.指针和指针变量 指针:一个变量的 ...

  3. Aspose系列实现docx转PDF,PPT转PDF,EXCEL转PDF

    没有什么营养,就是调用一下这个组件.其实一开始用的是Microsoft.Office.Interop.Excel;Microsoft.Office.Interop.Word 但是在服务器要注意,服务器 ...

  4. json的细节

    之前一直纳闷为什么在js里直接写的json数据可以不用eval()直接解析,而后台传入ajax的json数据需要eval()一下才能解析 原来是我没搞清楚json格式字符串跟json对象 var te ...

  5. CodeForces 670D Magic Powder

    二分. 二分一下答案,然后验证一下. #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cst ...

  6. CodeForces 711B Chris and Magic Square

    简单题. 找一个不存在$0$的行,计算这行的和(记为$sum$),然后就可以知道$0$那个位置应该填的数字(记为$x$). 如果$x<=0$,那么无解,否则再去判断每一行,每一列以及两个斜对角的 ...

  7. mac相关

    1 mac的动态链接库 mac基于bsd,所以它使用的是bsd风格的动态链接库,即以.dylib为后缀的动态链接库. 这个和windows的.dll和linux的.so相区分.

  8. PHP微信支付开发之扫描支付(模式二)后如何回调

    其实在写这篇文章的时候感觉自己已经落伍了,不过笔者在百度上搜索"微信支付开发之扫描支付(模式二)后如何回调"寻找答案时,发现依旧有很多朋友没有解决这个问题,所以就把自己的解决思路分 ...

  9. Dojo的UI框架bootstrap for dojo和Dojo-Bootstrap简介

    最近在学习Dojo,但样式问题真是头疼呀,虽然清新的淡蓝色很是减缓眼睛的疲劳,但这个扁平化简约风盛行的年代,光是清新的拟物已经满足不了群众的需求了,所以就在这样的需求下,我知道了bootstrap f ...

  10. 关于ajax跨域问题

    什么是跨域 1.document.domain+iframe的设置 2.动态创建script 3.利用iframe和location.hash 4.window.name实现的跨域数据传输 5.使用H ...