想一个1到100之间的数,分别除以357得到3个余数,把这三个余数输入计算机,计算机会猜出你想的数
来源:互联网 发布:淘宝土特产店铺简介 编辑:程序博客网 时间:2024/05/10 12:32
/**想一个1到100之间的数,分别除以357得到3个余数,把这三个余数输入计算机,计算机会猜出你想的数*/#include<iostream>using namespace std;int main(){ int a,b,c; cin>>a>>b>>c; int d=70*a+21*b+15*c; while(d>105){ d=d-105; } cout<<d;}
解释:
a,b,c是d除以3,5,7分别的余数
d=3l+a=5m+b=7n+c
d=(3l/a+1)a=(5m/b+1)b=(7n/c+1)c
用x,y,z替换上面括号里面的分式
d=(3x+1)a=(5y+1)b=(7z+1)c
可以看到(3x+1)a是一个除以3余1的数,(5y+1)b是一个除以5余1的数,(7z+1)c是一个除以7余1的数
已知s=u+3v+3w,s%3=u%3,若s=cu+3v+3w,c是3k+1时,也就是c是除以3余1的数,s%3=u%3也是成立的
所以另d=(3x+1)a+(5y+1)b+(7z+1)c
所以b,c的系数应该被3整除,才能保证d除以3的余数与a相同
ac的系数应该被5整除,才能保证d除以5的余数与b相同
ab的系数能被7整除,才能保证d除以7的余数与c相同
所以a的系数应该是被5,7整除并且除以3余1的最小的数,是70
b的系数应该是被3,7整除并且除以5余1的最小的数,是21
c的系数应该是被3,5整除并且除以7余1的最小的数,是15
所以有了这一句
int d=70*a+21*b+15*c;
但是这样算的结果可能超过105,就是3,5,7的最小公倍数
所以要减去105才能保证在1到100之间
阅读全文
0 0
- 想一个1到100之间的数,分别除以357得到3个余数,把这三个余数输入计算机,计算机会猜出你想的数
- 判断二进制数除以3的余数
- 从1到1024排成一个数除以9余数
- 算法学习(1):一个数的幂除以质数(10^9+7)的余数
- 100之内除以3的余数之和
- 押宝游戏“把1至2009这2009个自然数依次写下来得到一个多位数123456789.....2009,这个多位数除以9余数是多少?”解答
- 不许用%和/来实现求任意数除以3的余数
- 输入任意一个数,得到1到这个数之间的1的个数
- 11:计算浮点数相除的余数
- 3.2 计算浮点数相除的余数
- c语言同余定理的应用:三个大数除以m得到相同的余数,求m最大的数值
- java.系统自动生成一个1-100之间的整数,请猜出这个数
- 求两个数的整除余数
- 求两个数的整除余数
- 用两个线程玩猜数字游戏,第一个线程负责随机给出1~100之间的一个整数,第二个线程负责猜出这个数。
- 用两个线程玩猜数字游戏,第一个线程负责随机给出1~100之间的一个整数,第二个线程负责猜出这个数。
- 用两个线程玩猜数字游戏,第一个线程负责随机给出1~100之间的一个整数,第二个线程负责猜出这个数
- 华为机试题:输入两个超长整型构成的字符串,其间使用一个空格分隔,每个字符串最大长度为100个字符。求第一个整数除以第二个整数以后的余数。。
- 自定义可以设置最大高度的ListView
- PL/SQL(六):函数
- 泛型
- 微信小程序 限制2M的瘦身技巧与方法详解
- C# 不用添加WebService引用,调用WebService方法
- 想一个1到100之间的数,分别除以357得到3个余数,把这三个余数输入计算机,计算机会猜出你想的数
- 我叫李诗晨
- MyEclipse快捷键
- WebSocket
- 可复用的自定义BaseAdapter
- linux基础入门之groupadd命令
- git图形化工具GitKraken的使用——解决冲突
- Content provider
- Linux中 信号signal