20160124集训Day3-数学
来源:互联网 发布:淘宝id号是什么 编辑:程序博客网 时间:2024/05/01 13:53
A - 青蛙的约会 题目链接
题解:扩展欧几里德,//具体过程待补充
<扩展欧几里德模板>:
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); }}
#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;}
------------------------------------------------------------------------------------------------------------------
B - Strange Way to Express Integers 题目链接
题解:同A,扩展欧几里德。//还有种方法是用 中国剩余定理+不互质定理 待补充
#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;}
---------------------------------------------------------------------------------------------------------------------------------------------------------
C - Fibonacci 题目链接
题解:矩阵快速幂,模板见训练题R2
#include<iostream>#include<cstdio>using namespace std;typedef long long ll;#define MOD 10000ll a[7],b[7],a0[7],b0[7];void pow_mod(ll n){ a0[1]=a0[2]=a0[3]=1,a0[4]=0; b0[1]=b0[4]=1,b0[2]=b0[3]=0; while(n) { if(n%2==1) { b[1]=(a0[1]*b0[1]+a0[2]*b0[3])%MOD; b[2]=(a0[1]*b0[2]+a0[2]*b0[4])%MOD; b[3]=(a0[3]*b0[1]+a0[4]*b0[3])%MOD; b[4]=(a0[3]*b0[2]+a0[4]*b0[4])%MOD; for(int i=1;i<=4;i++) //注意用新变量保存 b0[i]=b[i]; } a[1]=(a0[1]*a0[1]+a0[2]*a0[3])%MOD; a[2]=(a0[1]*a0[2]+a0[2]*a0[4])%MOD; a[3]=(a0[3]*a0[1]+a0[4]*a0[3])%MOD; a[4]=(a0[3]*a0[2]+a0[4]*a0[4])%MOD; for(int i=1;i<=4;i++) //注意用新变量保存 a0[i]=a[i]; n/=2; }}int main(){ ll n; while(~scanf("%I64d",&n)&&n!=-1) { if(n==0) printf("0\n"); else { pow_mod(n); printf("%I64d\n",b[2]); } } return 0;}
----------------------------------------------------------------------------------------------------------------------------------------------
1.素数筛选;
2.欧拉函数;
3.欧拉定理;
4.逆元;
5.CRT(中国剩余定理);
6.积性函数;
7.FFT,NNT;
8.平方剩余;
9.莫比乌斯反演;
10.不互质定理;
11.组合数学:排列组合,组合游戏(博弈);
12.概率:概率DP,期望DP;
0 0
- 20160124集训Day3-数学
- 湖南集训Day3
- ACM集训day3
- zzuacm集训day3
- 省队集训DAY3
- 沈阳集训day3
- 暑期集训 DAY3
- 集训题解-Day3
- 郑州集训DAY3笔记
- 北京集训DAY3
- xor 2016 国庆集训day3
- 5月集训Day3考试
- 省队集训Round2 DAY3
- 国庆郑州集训day3:数据结构
- 福建省队集训被虐记——DAY3
- 陕西省集训day3(搜索上)
- 2016国庆集训day3-minimum.cpp
- 雅礼集训Day3-难题选讲
- Linux下新建java程序,编译,运行(以Ubuntu为例)
- 深入理解JVM--JVM垃圾回收机制
- hdoj5501GT and sequence
- 记录一下最近做的事
- Android&java的成长之路之三(Android引导页面和欢迎界面)
- 20160124集训Day3-数学
- Swift: 用UserDefaults保存复杂对象
- 斐讯PSG1208 K1 路由器刷机
- 【设计模式】—-(1)单例模式(创建型)
- 使用hexo和github pages搭建个人博客
- 2013年第四届蓝桥杯C/C++程序设计本科B组省赛
- $.ajax里面不识别ajax传参data里面的键是一个变量的情况
- LeetCode 61. Rotate List
- Java DataInputStream和DataOutputStream 使用例子