問題
“韓信點兵”問題的求解方法
有一隊士兵,確切人數不知,但若每3人一組,則余2人;
每5人一組,余3人;每7人一組,余5人;每11人一組,余4人。
代碼
#include<iostream>
using namespace std;
int main() {
int n = 2;
while (n % 5 != 3)
{ n = n + 15; }
while (n % 7 != 5)
{ n = n + 105; }
while (n % 11 != 4)
{ n = n + 1155; }
cout << n;
return 0;
}
請問哪里出錯了?
uj5u.com熱心網友回復:
while (n % 5 != 3){ n = n + 15; } //15本身能被5整除,+15有什么意義?如果進入回圈則死回圈
改成
int i = 5; //3人組余2
for (; ; i+=3) { //每次遞增3人,則保證3人組必余2
if (i%5==3 && i%7==5 && i%11==4) break;
}
printf("%d", i);
uj5u.com熱心網友回復:
改成這樣效率高一些int i = 15; //11人組余4
for (; ; i+=11) { //每次遞增11人,則保證11人組必余4
if (i%5==3 && i%7==5 && i%3==2) break;
}
uj5u.com熱心網友回復:
我剛剛上完課過來,好的,謝謝你啦轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/132819.html
標籤:工具平臺和程序庫
上一篇:求解撰寫程式題目
