信息学奥赛一本通 1080:余数相同问题 | OpenJudge NOI 小学奥数/2.1 7647:余数相同问题
【题目链接】
ybt 1080:余数相同问题
OpenJudge NOI 2.1 7647:余数相同问题
OpenJudge NOI 小学奥数 7647:余数相同问题
【题目考点】
1. 枚举
【解题思路】
题目给出a,b,c小于等于10610^6106,可行的解一定小于10610^6106,可以考虑用枚举解法。
枚举解法
x从2循环到1000000,分别求a % x, b % x, c % x,如果三者的结果相等,那么输出x,结束程序。处理后的枚举解法
已知a,b,c除以数x后得到的余数相同,可以有方程组
a÷x=q1⋯⋯ra \div x = q_1 \cdots\cdots ra÷x=q1⋯⋯r
b÷x=q2⋯⋯rb \div x = q_2 \cdots\cdots rb÷x=q2⋯⋯r
c÷x=q2⋯⋯rc \div x = q_2 \cdots\cdots rc÷x=q2⋯⋯r
其中x,q1,q2,q3,rx,q_1,q_2,q_3,rx,q1,q2,q3,r都是整数
方程两两相减,调整后可得
a−bx=q1−q2\frac{a-b}{x} = q_1 - q_2xa−b=q1−q2
b−cx=q2−q3\frac{b-c}{x} = q_2 - q_3xb−c=q2−q3
由于不清楚a,b,c的大小关系。为了使参与运算的表达式都是非负数,对等式两侧取绝对值,有
∣a−b∣x=∣q1−q2∣\frac{|a-b|}{x} = |q_1 - q_2|x∣a−b∣=∣q1−q2∣
∣b−c∣x=∣q2−q3∣\frac{|b-c|}{x} = |q_2 - q_3|x∣b−c∣=∣q2−q3∣
等式右侧的都是整数值,因而左侧必然可以整除,即∣a−b∣|a-b|∣a−b∣可以整除xxx,且∣b−c∣|b-c|∣b−c∣可以整除xxx。
题目要求最小的x,即求∣a−b∣|a-b|∣a−b∣与∣b−c∣|b-c|∣b−c∣的最小公约数。
具体方法,还是枚举。x从2循环到1000000,看哪个x能同时被∣a−b∣|a-b|∣a−b∣和∣b−c∣|b-c|∣b−c∣整除。
注意:不能写为x从2循环到min(∣a−b∣,∣b−c∣)min(|a-b|,|b-c|)min(∣a−b∣,∣b−c∣),因为这两个差值可能为0,从2开始循环的话,会导致循环体一次都不执行,以至于没有输出。
【题解代码】
解法1:枚举
#include<bits/stdc++.h>
using namespace std;
int main()
{int x, a, b, c;cin>>a>>b>>c;int am, bm, cm;//a,b,c对x取模的值for(x = 2; x <= 1000000; ++x){am = a % x;bm = b % x;cm = c % x;if(am == bm && bm == cm && cm == am){cout<<x;//只求最小值,只要找到一个符合条件的x即可break;}}return 0;
}
解法2:处理后的枚举
#include<bits/stdc++.h>
using namespace std;
int main()
{int x, a, b, c;cin>>a>>b>>c;int ab = abs(a - b), bc = abs(b - c);for(int x = 2; x <= 1000000; x++){if(ab % x == 0 && bc % x == 0){cout<<x;break;}}return 0;
}
信息学奥赛一本通 1080:余数相同问题 | OpenJudge NOI 小学奥数/2.1 7647:余数相同问题相关推荐
- 信息学奥赛一本通 1081:分苹果 | OpenJudge NOI 小学奥数 7826:分苹果
[题目链接] ybt 1081:分苹果 OpenJudge NOI 小学奥数 7826:分苹果 [题目考点] 1. 求和 [解题思路] 该问题可以抽象为:n个整数,都大于0,n个数不同,求这n个数的和 ...
- 信息学奥赛一本通 1082:求小数的某一位 | OpenJudge NOI 小学奥数 7830
[题目链接] ybt 1082:求小数的某一位 OpenJudge NOI 小学奥数 7830:求小数的某一位 [题目考点] 1. 数制:求某小数位 设rrr为a/b的余数,q是整数商,那么根据 a÷ ...
- 信息学奥赛一本通 1101:不定方程求解 | OpenJudge NOI 2.1 7650 | 小学奥数 7650
[题目链接] ybt 1101:不定方程求解 OpenJudge NOI 2.1 7650:不定方程求解 OpenJudge NOI 小学奥数 7650:不定方程求解 [题目考点] 1. 枚举 [解题 ...
- 信息学奥赛一本通 1084:幂的末尾 | OpenJudge NOI 小学奥数 7833
[题目链接] ybt 1084:幂的末尾 OpenJudge NOI 小学奥数 7833:幂的末尾 [题目考点] 1. 同余定理 根据同余定理,有: (a∗b)%m=(a%m∗b%m)%m(a*b)\ ...
- 信息学奥赛一本通 1083:计算星期几 | OpenJudge NOI 小学奥数 7831
[题目链接] ybt 1083:计算星期几 OpenJudge NOI 小学奥数 7831:计算星期几 [题目考点] 1. 同余定理 根据同余定理,有: (a∗b)%m=(a%m∗b%m)%m(a*b ...
- 信息学奥赛一本通 1005:地球人口承载力估计| OpenJudge NOI 小学奥数 7653
[题目链接] ybt 1005:地球人口承载力估计 OpenJudge NOI 小学奥数 7653:地球人口承载力估计 [题目考点] 保留x位小数输出浮点型数字a的写法: cout<<fi ...
- 信息学奥赛一本通 1209:分数求和 | OpenJudge NOI 1.13 12:分数求和
[题目链接] ybt 1209:分数求和 OpenJudge NOI 1.13 12:分数求和 [题目考点] 1. 求最大公约数 2. 求最小公倍数 [解题思路] 求最大公约数,可以用辗转相除法.具体 ...
- 信息学奥赛一本通 1294:Charm Bracelet | OpenJudge NOI 2.6 7113:Charm Bracelet | 洛谷 P2871
[题目链接] ybt 1294:Charm Bracelet OpenJudge NOI 2.6 7113:Charm Bracelet 洛谷 P2871 [USACO07DEC]Charm Brac ...
- 信息学奥赛一本通 1175:除以13 | OpenJudge NOI 1.13 27:除以13
[题目链接] ybt 1175:除以13 OpenJudge NOI 1.13 27:除以13 [题目考点] 1. 高精度 考察:高精除低精 高精模低精 高精度计算讲解 [题解代码] 解法1:使用函数 ...
最新文章
- event.keyCode用法及列表
- 每人300万激励科学探索,北大谢涛、清华朱军等50人获奖,腾讯这个大奖公布...
- 【cocos2d-x从c++到js】21:使用CocosCode调试JSB
- 【Tiny4412】 编译dnw源码报错 /lib/modules/2.6.32-431.el6.x86_64/build/: No such file or directory
- python构建二叉树_python--使用递归的方式建立二叉树
- ImageMagick 将PDF转图片命令
- vue使用node-sass@4.9.0时,npm intall出错
- 24点自动出题,可打印,A4排版
- selenium自动化测试环境搭建及启动safair浏览器(Mac)
- 什么打印软件比较好用?可以打印资料的网上打印平台
- 牛客 20859 兔子的名字
- 时序图神经网络总结(1)
- android 怎样删除sim卡中的联系人
- logistic模型预测人口python_基于logistic回归stats模型的概率预测置信区间
- 考研人的快乐瞬间,今天你快乐了吗?
- javax.net.ssl.SSLException: hostname in certificate didn't match:
- TwinCAT 3 控制汇川伺服 startup添加索引列表
- anki 新的卡片类型_Anki卡片制作:入门(1)
- 想从事大数据行业,大数据、数据分析和数据挖掘的区别一定要懂
- 网络分流器-网络分流器TAP网络流量监控