韩信带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; } }
|