观察下面的算式:
* * × * * = * * *
它表示:两个两位数字相乘,结果是3位数。其中的星号(*)代表任意的数字,可以相同,也可以不同,只要不是在首位的就可以是0。当然,满足这个要求的算式很多,但我们还有如下的要求:
所有星号所代表的数字全都是奇数。满足这个要求的算式就不多了。
比如:13 x 15 = 195
题目的任务是:编写程序,找到所有可能的情况。
观察下面的算式:
* * × * * = * * *
它表示:两个两位数字相乘,结果是3位数。其中的星号(*)代表任意的数字,可以相同,也可以不同,只要不是在首位的就可以是0。当然,满足这个要求的算式很多,但我们还有如下的要求:
所有星号所代表的数字全都是奇数。满足这个要求的算式就不多了。
比如:13 x 15 = 195
题目的任务是:编写程序,找到所有可能的情况。
输出的结果中,每个情况占用1行,不需要考虑不同情况如何排序问题。每行的格式如:
13 x 15 = 195
其中乘号用“x”表示。
代码如下:
#include <iostream> using namespace std; int main() { int n,m,s; for (m=11; m<=99; m+=2) { if (((m%10)%2==0)||((m/10)%2==0)) continue; for (n=11; n<=99; n+=2) { if (((n%10)%2==0)||((n/10)%2==0)) continue; s=n*m; if (s<=999&&s>=100) if (((s%10)%2==1)&&(((s/10)%10)%2==1)&&((s/100)%2==1)) cout<<m<<" X "<<n<<" = "<<s<<endl; } } return 0; }
图就不上传了。。。但这道题必须上传,,,简单的一道题居然因为我的粗心错了四次,首先是没看清题目m、n每一位上都必须是奇数错了一次,第二三次是因为格式问题。X的大小写和X与=号前后的空格没有,最后一次是if (((m%10)%2==0)||((m/10)%2==0))的||我又用成了&&。。。惨痛的教训
原文地址:http://blog.csdn.net/liuchang54/article/details/44812271