1. 程式人生 > >nyoj題目34:韓信點兵

nyoj題目34:韓信點兵

韓信點兵

時間限制: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.intmain () 05.{ 06.inta, 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.return0; 19.}

這個題見過一次故好做。

第一次錯誤

自己在d那裡沒有這麼用,而是直接的用d%3 d%5 d%7最後一直不對,後被點醒,原來自己沒有定義

第二次錯誤

自己在第一個if時  break未放在括號內導致一直沒有printf。

優秀程式碼

01.

02.#include<iostream> 03.usingnamespace std; 04.intmain() 05.{ 06.inta,b,c; 07.cin>>a>>b>>c;
08.intn=(a*70+b*21+c*15)%105; 09.if(n>100||n<10) cout<<"No answer"<<endl; 10.elsecout<<n<<endl; 11.}

表示看不懂 iostream 這種定義自己沒用過,cin是啥也不清楚。各種不會。。。。