nyoj題目34:韓信點兵
阿新 • • 發佈:2019-02-06
韓信點兵
時間限制:3000 ms | 記憶體限制:65535 KB 難度:1- 描述
- 相傳韓信才智過人,從不直接清點自己軍隊的人數,只要讓士兵先後以三人一排、五人一排、七人一排地變換隊形,而他每次只掠一眼隊伍的排尾就知道總人數了。輸入3個非負整數a,b,c ,表示每種隊形排尾的人數(a<3,b<5,c<7),輸出總人數的最小值(或報告無解)。已知總人數不小於10,不超過100 。
- 輸入
- 輸入3個非負整數a,b,c ,表示每種隊形排尾的人數(a<3,b<5,c<7)。例如,輸入:2 4 5
- 輸出
- 輸出總人數的最小值(或報告無解,即輸出No answer)。例項,輸出:89
- 樣例輸入
-
2 1 6
- 樣例輸出
-
41
01.
02.
#include <stdio.h>
03.
04.
int
main ()
05.
{
06.
int
a, b, c, d;
07.
scanf
(
"%d
%d %d"
, &a, &b, &c);
08.
for
(d = 10; d <= 100; d++) \\對d的值進行預設定
09.
{
10.
if
(d % 3 == a && d % 5 == b && d % 7 ==
c)
11.
{
12.
printf
(
"%d\n"
,
d);
13.
break
; \\題目中求最小值,注意需要跳出。
14.
}
15.
if
(d == 100)
16.
printf
(
"NO
answer\n"
);
17.
}
18.
return
0;
19.
}
這個題見過一次故好做。
第一次錯誤
自己在d那裡沒有這麼用,而是直接的用d%3 d%5 d%7最後一直不對,後被點醒,原來自己沒有定義
第二次錯誤
自己在第一個if時 break未放在括號內導致一直沒有printf。
優秀程式碼
01.
02.
#include<iostream>
03.
using
namespace
std;
04.
int
main()
05.
{
06.
int
a,b,c;
07.
cin>>a>>b>>c;
08.
int
n=(a*70+b*21+c*15)%105;
09.
if
(n>100||n<10)
cout<<
"No answer"
<<endl;
10.
else
cout<<n<<endl;
11.
}
表示看不懂 iostream 這種定義自己沒用過,cin是啥也不清楚。各種不會。。。。