题目链接: http://www.51nod.com/onlineJudge/user.html#!userId=21687

题意: 中文题诶~

思路: 本题就是个中国剩余定理模板题,不过模拟也可以过,而且时间复杂度嘛~

我们可以知道gcd得出两个数的最大公约在最坏的情况下(a, b是相邻的两个斐波拉契数)是O(logn)的, 同理可以知道exgcd也是O(lgn)时间复杂度,因此中国剩余定理时间复杂度是O(nlogn); 而模拟的话最坏的情况下需要O(n*x)的时间~本题两种算法都是15ms...

这里给出一个关于gcd时间复杂度分析的博客: http://blog.csdn.net/zeroonet/article/details/53375313

我们先说一下模拟.首先我们知道如果x%a=m的话, x=k*a+m.

对于 x%a1=m1, 很显然x(min)=m, 如果再加一组条件 x%a2=m2, 若当前x(min)不满足条件2的话, 我们找下一个(我们可以想象满足条件1的数据升序排列)满足条件1的数据,即a1+m,再判断其是否满足条件2, 很显然我们只要地推下去就能找到同时满足条件1, 2的最小数据; 如果再加一个条件 x%a3=m3呢? 前面我们已经招到了满足条件1, 2的最小数据

x(min), 若其不满足条件3话, 我们找下一个满足条件1, 2的数据, 即x(min)+lcm(a1, a2)(此题中ai与aj互质,所以直接相乘就好啦,并且由这里我们不难看出最坏情况下即每次加2时其时间复杂度为O(x)), 再判断其是否满足条件3, 最终我们可以招到同时满足三个条件的最小数;

那么,很明显对于要满足n个这样的条件的答案我们也可以用这个方法求到啦~

代码:

 #include <bits/stdc++.h>
#define MAXN 20
#define ll long long
using namespace std; int main(void){
int n;
ll p[MAXN], m[MAXN], ans=, gg=;
scanf("%d", &n);
for(int i=; i<n; i++){
scanf("%lld%lld", &m[i], &p[i]);
}
ans=p[];
for(int i=; i<n-; i++){
gg*=m[i];
while(ans%m[i+]!=p[i+]){
ans+=gg;
}
}
printf("%lld\n", ans);
return ;
}

那么中国剩余定理的模板呢~

至于证明嘛, 暂时还没想到(望路过的大神教一下)~

代码:

 #include <bits/stdc++.h>
#define MAXN 20
#define ll long long
using namespace std; ll p[MAXN], m[MAXN];
int n; void exgcd(ll a, ll b, ll& x, ll& y){ //exgcd求乘法取模运算的逆元
if(!b){
y=, x=;
return;
}else{
exgcd(b, a%b, x, y);
ll temp=x;
x=y;
y=temp-a/b*y;
}
} ll crt(void){
ll M=, ans=;
for(int i=; i<n; i++){
M*=m[i];
}
for(int i=; i<n; i++){
ll mi=M/m[i], x, y;
exgcd(mi, m[i], x, y);
ans=(ans+p[i]*x*mi)%M;
}
if(ans<){
ans+=M;
}
return ans;
} int main(void){
scanf("%d", &n);
for(int i=; i<n; i++){
scanf("%lld%lld", &m[i], &p[i]);
}
printf("%lld\n", crt());
return ;
}

51nod1079(中国剩余定理)的更多相关文章

  1. 51nod1079 中国剩余定理【数论】

    一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K.例如,K % 2 = 1, K % 3 = 2, K % 5 = 3.符合条件的最小的K = 23. Input 第1行:1个数N表 ...

  2. 51nod1079 poj2891 中国剩余定理与其扩展

    题目链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1079 一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K. ...

  3. ACM/ICPC 之 中国剩余定理+容斥原理(HDU5768)

    二进制枚举+容斥原理+中国剩余定理 #include<iostream> #include<cstring> #include<cstdio> #include&l ...

  4. 中国剩余定理(Chinese Remainder Theorem)

    我理解的中国剩余定理的含义是:给定一个数除以一系列互素的数${p_1}, \cdots ,{p_n}$的余数,那么这个数除以这组素数之积($N = {p_1} \times  \cdots  \tim ...

  5. HDU 5446 中国剩余定理+lucas

    Unknown Treasure Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Other ...

  6. poj1006生理周期(中国剩余定理)

    /* 中国剩余定理可以描述为: 若某数x分别被d1..….dn除得的余数为r1.r2.….rn,则可表示为下式: x=R1r1+R2r2+…+Rnrn+RD 其中R1是d2.d3.….dn的公倍数,而 ...

  7. poj 1006:Biorhythms(水题,经典题,中国剩余定理)

    Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 110991   Accepted: 34541 Des ...

  8. UVA 11754 (暴力+中国剩余定理)

    题目链接: http://www.bnuoj.com/v3/problem_show.php?pid=20172 题目大意:有C个模方程,每个方程可能有k余数,求最小的S个解. 解题思路: 看见模方程 ...

  9. poj1006-Biorhythms(中国剩余定理)

    一,题意:右上角中文.二,思路: 1,由题意得出方程组 2,利用中国剩余定理求解 3,求出最小正整数三,步骤: 1,由题意得出方程组 (n+d) % 23 = p ; (n+d) % 28 = e ; ...

随机推荐

  1. Matplotlib 学习笔记

    注:该文是上了开智学堂数据科学基础班的课后做的笔记,主讲人是肖凯老师. 数据绘图 数据可视化的原则 为什么要做数据可视化? 为什么要做数据可视化?因为可视化后获取信息的效率高.为什么可视化后获取信息的 ...

  2. wildfly jboss 优化配置

    参考调优:http://www.mastertheboss.com/jboss-server/jboss-performance/jboss-as-7-performance-tuning?showa ...

  3. ubuntu14.04 安装pip

    参考链接: 1.http://www.liquidweb.com/kb/how-to-install-pip-on-ubuntu-14-04-lts/ 2.http://idroot.net/tuto ...

  4. d3 document

    https://github.com/d3/d3/wiki/API--%E4%B8%AD%E6%96%87%E6%89%8B%E5%86%8C https://github.com/d3/d3/wik ...

  5. wamp(win1064位家庭版+apache2.4.20+php5.5.37+mysql5.5.50)环境搭建

    wamp环境搭建之软件准备 *php:http://windows.php.net/downloads/releases/php-5.5.37-Win32-VC11-x86.zip *apache:h ...

  6. Node.js入门笔记(4):文件系统(fs)

    文件系统(FileSystem) 文件系统模块 对于文件无外乎创建修改添加. File System - 文件系统模块 - require('fs') fs模块是核心模块,需要使用require导入后 ...

  7. Bash 会清空从父进程继承来的 OLDPWD

    即便 Bash 没有从父进程继承任何的环境变量,Bash 自己也会创建三个环境变量,分别是: $ env -i bash -c export declare -x OLDPWD declare -x ...

  8. [Machine Learning & Algorithm] 随机森林(Random Forest)

    1 什么是随机森林? 作为新兴起的.高度灵活的一种机器学习算法,随机森林(Random Forest,简称RF)拥有广泛的应用前景,从市场营销到医疗保健保险,既可以用来做市场营销模拟的建模,统计客户来 ...

  9. Sublime编辑器安装使用

    用习惯了VS2010强大的IDE工具,但也被它折腾过.烦恼过,当vs加载超过万行的脚本代码时,界面半天才反应,经常卡死,电脑配置决定算得上顶呱呱. 不喜欢逆来顺受,于是选择了txt文本编辑器,最原始的 ...

  10. VC调试闪退解决办法

    在VC2010调试或执行EXE文件时,程序运行结束后自动退出了,想看到打印 可以采用几种方法: 1.按ctrl+F5只执行不调试 2.在cmd中手动调用 而不是直接点 3.加入getchar  #in ...