(数论)51NOD 1079 中国剩余定理
第1行:1个数N表示后面输入的质数及模的数量。(2 <= N <= 10)
第2 - N + 1行,每行2个数P和M,中间用空格分隔,P是质数,M是K % P的结果。(2 <= P <= 100, 0 <= K < P)
输出符合条件的最小的K。数据中所有K均小于10^9。
3
2 1
3 2
5 3
23 解:
方法一
#include <stdio.h> typedef struct
{
int p, m;
}str; str s[]; int cmp(const void *a, const void *b)
{
return ((str *)a)->p > ((str *)b)->p ? - : ;
} int main()
{
int n;
while (scanf_s("%d", &n) != EOF)
{
long long mult = ;
int ans;
for (int i = ; i < n; i++)
{
scanf_s("%d%d", &s[i].p, &s[i].m);
mult *= s[i].p;
}
qsort(s, n, sizeof(str), cmp);
for (int i = , flag = ; flag && i * s[].p <= mult; i++)
{
ans = s[].p * i + s[].m;
for (int j = ; ans % s[j].p == s[j].m;j++)
{
if (j == n - )
{
flag = ;
break;
}
}
}
printf("%d\n", ans); }
}
改进法一后的法二:
#include <stdio.h> int main()
{
int n;
while (scanf_s("%d", &n) != EOF)
{
int a, b, c, d;
scanf_s("%d%d", &a, &b);
for (int i = ,j; i < n; i++)
{
scanf_s("%d%d", &c, &d);
for (j = ; (a * j + b) % c != d; j++);
b = a * j + b;
a *= c;
}
printf("%d\n", b);
}
}
法三:
中国剩余定理(https://baike.baidu.com/item/孙子定理/2841597?fromtitle=%E4%B8%AD%E5%9B%BD%E5%89%A9%E4%BD%99%E5%AE%9A%E7%90%86&fromid=11200132&fr=aladdin)+ 拓展欧几里得
(注意中国剩余定理必满足使用拓展欧几里得求逆元的条件,即n个不同质数,其中n-1个的乘积必与剩下的1个互质)
#include <stdio.h> int inv[], pm[]; void Ex_gcd(int a, int b, int *x, int *y); int main()
{
int t;
while (scanf_s("%d", &t) != EOF)
{
long long M = , ans = ;
for (int i = ; i < t; i++)
{
scanf_s("%d%d", &pm[i], &pm[i + ]);
M *= pm[i];
}
for (int i = , temp; i < t; i++)
{
Ex_gcd(M / pm[i], pm[i], &inv[i], &temp);
inv[i] = (inv[i] + pm[i]) % pm[i];
ans = (ans + M / pm[i] * inv[i] * pm[i + ]) % M;
}
printf("%d\n", ans);
}
} void Ex_gcd(int a, int b, int *x, int *y)
{
if (b == )
{
*x = ;
*y = ;
return;
}
Ex_gcd(b, a%b, x, y); //或者可以这么写
int t = *y; //ex_gcd(b, a%b, y, x);
*y = *x - a / b * (*y); //*y = *y - (a / b)**x;
*x = t; //return;
return;
}
(数论)51NOD 1079 中国剩余定理的更多相关文章
- acm数论之旅--中国剩余定理
ACM数论之旅9---中国剩余定理(CRT)(壮哉我大中华╰(*°▽°*)╯) 中国剩余定理,又名孙子定理o(*≧▽≦)ツ 能求解什么问题呢? 问题: 一堆物品 3个3个分剩2个 5个5个分剩3个 ...
- 51NOD——T 1079 中国剩余定理
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1079 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难 ...
- 51 nod 1079 中国剩余定理
1079 中国剩余定理 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K.例如,K % ...
- [TCO 2012 Round 3A Level3] CowsMooing (数论,中国剩余定理,同余方程)
题目:http://community.topcoder.com/stat?c=problem_statement&pm=12083 这道题还是挺耐想的(至少对我来说是这样).开始时我只会60 ...
- 数论E - Biorhythms(中国剩余定理,一水)
E - Biorhythms Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Subm ...
- hihocode 九十七周 中国剩余定理
题目1 : 数论六·模线性方程组 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:今天我听到一个挺有意思的故事! 小Hi:什么故事啊? 小Ho:说秦末,刘邦的将军 ...
- 《孙子算经》之"物不知数"题:中国剩余定理
1.<孙子算经>之"物不知数"题 今有物不知其数,三三数之剩二,五五数之剩七,七七数之剩二,问物几何? 2.中国剩余定理 定义: 设 a,b,m 都是整数. 如果 m ...
- POJ 1006 中国剩余定理
#include <cstdio> int main() { // freopen("in.txt","r",stdin); ; while(sca ...
- poj1006中国剩余定理
Biorhythms Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 103506 Accepted: 31995 Des ...
随机推荐
- Django:(2)视图层&模板层
视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . ...
- Codeforces915F. Imbalance Value of a Tree
n<=1e6的树问所有路径的极差之和. 被遗忘的套路...以后绝对不会再忘了QAQ 只要算最大值之和即可,最小值同理.数字从大到小排序(反正都是要排序的,如果从大到小不行等会反过来试试),然后逐 ...
- Uva - 12230 Crossing Rivers (数学期望)
你住在村庄A,每天需要过很多条河到另一个村庄B上班,B在A的右边,所有的河都在A,B之间,幸运的是每条船上都有自由移动的自动船, 因此只要到达河左岸然后等船过来,在右岸下船,上船之后船的速度不变.现在 ...
- SQL SERVER代理作业删除失败问题
在SQL Server 2005上遇到了先删除已运行维护计划后,再删除代理中由其产生的作业时,提示删除失败. DELETE 语句与 REFERENCE 约束"FK_subplan_job ...
- [bzo1211][HNOI2004]树的计数_prufer序列
树的计数 bzoj-1211 HNOI-2004 题目大意:题目链接. 注释:略. 想法: prufer序列有一个性质就是一个数在prufer序列中出现的次数等于这个prufer序列生成的树中它的度数 ...
- Lua:ipairs和pairs的区别
ipairs 和pairs在lua中都是遍历tbale的函数但是两者有区别 1.pairs遍历table中的所有的key-vale 而ipairs会根据key的数值从1开始加1递增遍历对应的table ...
- myloader恢复mysql数据库演示样例
mydumper是针对mysql数据库备份的一个轻量级第三方的开源工具.备份方式为逻辑备份.它支持多线程.备份速度远高于原生态的mysqldump以及众多优异特性.与其相配套的恢复工具则是mylo ...
- 网络学习之OSI七层协议和TCP协议
OSI七层简单介绍 应用层:提供操作系统和应用程序的接口 表示层:表示数据如何加密.如何压缩的 会话层:将不同应用程序数据分离 传输层:提供可靠和不可靠的数据传输和重传.纠错的功能 网络层:提供IP地 ...
- NA交换②
虚拟局域网VLAN的核心目的: 将一个大的网络划分为小的网络,也称为网络分片(Segementation):一个VLAN对应着一个广播域,最好对应一个网络子网(为VLAN间的路由作准备). ...
- 手动安装Firefox Linux
(2015-06-05 17:22:19)[编辑][删除] 转载▼ 标签: 股票 Firefox 下载文件以.tar和.bz2格式保存,必须从这些压缩包中提取文件.不想删除当前安装的 Firefox, ...