蓝桥杯~古堡算式 | 您所在的位置:网站首页 › 357怎么写算式 › 蓝桥杯~古堡算式 |
见证自己成长 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA 他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!” 华生:“我猜也是!” 于是,两人沉默了好久,还是没有算出合适的结果来。 请你利用计算机的优势,找到破解的答案。 把 ABCDE 所代表的数字写出来。 答案写在“解答.txt”中,不要写在这里 解法一思路:将一个五位数逆序之后和原数字再进行 “原数字 * 一个数 = 逆序数 ”的运算,在逆序过程中,为了保证每个数字都不同,故意将有相同数字的五位数的逆序数变成0,使得判断条件不满足而无法输出。同时为了实现逆序,自己写了一个pow函数 * 总体来说: 自我感觉自己的代码很笨重,很多多余的东西有种被题目牵着鼻子走的感觉,只是读懂表面,然后完全按照题目表面意思实现,没有去分析它的本质,导致计算好复杂,循环次数也很多自我批评自我告诫,也提醒可能会有同样问题的你* //我自己的解法 #include using namespace std; int pow( int x,int n) { int y = x; if( n == 0) return 1; //满足一个数的零次幂为1 for(int i = 0; i < n - 1; i++) x *= y; return x; } int Reverse(int x,int sum ) { sum = 0; int a[6]; for(int i = 4; i >= 0; i--) { int n; a[i] = x % 10; x /= 10; for(int j = 4; j > i; j--) //判断是否有重复 if(a[i] == a[j]) return 0; //故意将有重复数字的逆序数变成0 sum += a[i] * pow(10,i); } return sum; } int main(void) { int x,sum; for( int x = 10000; x |
CopyRight 2018-2019 实验室设备网 版权所有 |