发布于:,更新于:

韩信点兵:韩信带1500名士兵打仗...

韩信带1500名士兵打仗,战死四五百人,剩下的士兵排队:站3人一排,多出2人;站5人一排多出4人;站7人一排,多出6人。韩信立马说出1049。请验证结果

解题:

设 战死人数为 x
因为 战死 四五百人,所以取值范围在 1000-1500之间
站3人一排,多出2人 则 x / 3 的余数为 2 (x%3==2)
站5人一排,多出4人 则 x / 5 的余数为 4 (x%5==4)
站7人一排,多出6人 则 x / 3 的余数为 6 (x%7==6)

且 x 同时满足 (x%3==2) (x%5==4) (x%7==6)

将上述综合起来,代码如下:

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>

using namespace std;

int main() {
for (int x= 1;x<1500;x++) {
if(x%3==2 && x%5==4 && x%7==6 && x < 1500 && x > 1000) {
cout << x << endl;
break;
} else {
continue;
}
}
return 0;
}

Python

1
2
3
4
5
6
for x in range(1, 1500):
if (x%3==2) and (x%5==4) and (x%7==6) and x < 1500 and x > 1000:
print(x)
break
else:
continue

题目仅要求验证结果是否正确,所以又可以直接使用if关键字

C++如下

1
2
3
4
5
6
7
8
9
#include <iostream>

using namespace std;

int main() {
if(1049%3==2 && 1049%5==4 && 1049%7==6){
cout << "结果正确" << endl;
}
}