说明
有一个“就是它”的猜数游戏,步骤如下:请你对任意输入的一个三位数x,在这三位数后重复一遍,得到一个六位数,467-->467467.把这个数连续除以7、11、13,输出最后的商。
输入格式
输入一个三位数x。
输出格式
输出最后的商。
样例
输入数据 1
100
Copy
输出数据 1
100
题解
我来告诉大家为什么原原本本的输出:
首先,我们来想想,如何把一个三位数(我们用n来表示)在它后面重复一遍呢?其实很简单,乘上1001就行了(首先,要新增三位,就是先将n乘上1000,接着,再加上n,把后三位的空缺补上,就完成啦,整个过程可以用n * 1000 + n这个算式来表示,接着我们可以用乘法分配律,把他先化为n * 1000 + n * 1,再化为n * (1000 + 1), 最后化为n * 1001);
题目还要求:把这个六位数(n * 1001)连续除以7、11和13。那全部算式就可以用n * 1001 / 7 / 11 / 13来表示,我们可以利用除法的性质,把他化为n * 1001 / (7 * 11 * 13),我们试着算一下7 * 11 * 13的结果,就可以发现,7 * 11 * 13 = 1001!
有些人可能还不明白,那让我们回到之前的算式,即n * 1001 / (7 * 11 * 13),再把它化为n * 1001 / 1001,这时,乘1001会跟除以1001抵消,最终的结果便变成了n,也就是说,最终的结果跟刚开始一模一样!
这就是为什么原原本本的输出。那我们明白了这一点,代码不就简单了吗?一个学到Level1的应该都会(输入一个数n,再将它原原本本的输出,原因在上面已经讲过了),不多说,接下来上代码!
已AC,请放心食用
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
cout << n;
return 0;
}
Copy
结语:学好数学,是学好编程的基础,三年级学到的运算定律在这题中派上了很大的用场,所以,我们学到知识后,要活学活用,这样才能达到学知识的目的~