您的位置:首页 > 其它

蓝桥杯校园选拔之汉字相加

2018-02-09 20:35 281 查看
有如下的加法算式。其中每个汉字代表一个数字。(如果存在对齐问题,可参见【图1.png】)               年             大年           过大年         能过大年       怎能过大年     我怎能过大年+  让我怎能过大年------------------   能能能能能能能请填写“让我怎能过大年” 所代表的整数。所有数字连在一起,中间不要空格。例如:"3125697"。当然,这个不是正确的答案。注意:只填写一个整数,不要填写任何多余的内容。
#include<iostream>using namespace std;int main(void) {int a, b, c, d, e, f, g;int n,n1, n2, n3, n4, n5, n6, n7;int result[10];int count = 0;for (a = 1; a <= 9; a++) {for (b = 1; b <= 9; b++) {for (c = 1; c <= 9; c++) {for (d = 1; d <= 9; d++) {for (e = 1; e <= 9; e++) {for (f = 1; f <= 9; f++) {for (g = 1; g <= 9; g++) {n1 = a;n2 = b * 10 + a;n3 = c * 100 + b * 10 + a;n4 = d * 1000 + c * 100 + b * 10 + a;n5 = e * 10000 + d * 1000 + c * 100 + b * 10 + a;n6 = f * 100000 + e * 10000 + d * 1000 + c * 100 + b * 10 + a;n7 = g * 1000000 + f * 100000 + e * 10000 + d * 1000 + c * 100 + b * 10 + a;n =  d * 1000000 + d * 100000 + d * 10000 + d * 1000 + d * 100 + d * 10 + d;if (n==n1+n2+n3+n4+n5+n6+n7) {result[count] = n7;count++;}}}}}}}}cout << "方法一" << endl;for (int i = 0; i < count;i++) {cout << result[i] << endl;}count = 0;memset(result,0,sizeof(result));for (int number = 1111111; number <= 9999999;number++) {a = number % 10;b = (number / 10) % 10;c = (number / 100) % 10;d=  (number / 1000) % 10;e=  (number / 10000) % 10;f=  (number / 100000) % 10;g=  (number / 1000000);n1 = a;n2 = b * 10 + a;n3 = c * 100 + b * 10 + a;n4 = d * 1000 + c * 100 + b * 10 + a;n5 = e * 10000 + d * 1000 + c * 100 + b * 10 + a;n6 = f * 100000 + e * 10000 + d * 1000 + c * 100 + b * 10 + a;n7 = g * 1000000 + f * 100000 + e * 10000 + d * 1000 + c * 100 + b * 10 + a;n = d * 1000000 + d * 100000 + d * 10000 + d * 1000 + d * 100 + d * 10 + d;if ((n == n1 + n2 + n3 + n4 + n5 + n6 + n7)&&(a!=0&& b != 0&& c != 0&& d != 0 && e != 0&& f != 0&& g != 0)) {result[count] = n7;count++;}}cout << "方法二" << endl;for (int i = 0; i < count; i++) {cout << result[i] << endl;}system("pause");return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: