剛剛學習了多case的幾種要求,記錄一下。多case的問題在般有3種情形:(1)有乙個數字開始表明case數目;(2)以特殊標誌表示結束;(3)要求處理到最後一行。
問題描述:
有三批測試資料,第1批測試資料,開頭會以乙個數字告之該批case數量,每乙個case是兩個正整數(小於等於2的31次方);
第1批測試資料結束後,緊接著是第2批資料,每乙個case同樣是兩個正整數,第2批測試資料以兩個0結束;
第2批測試資料結束後,緊接著是第3批資料,每乙個case也是兩個正整數,第3批測試資料一直到資料輸入結束(ctrl+z);
要求,每乙個case,輸出兩數的最小公倍數
第1批測試資料處理完畢時,輸出「group 1 done」
第2批測試資料處理完畢時,輸出「group 2 done」
第3批測試資料處理完畢時,輸出「group 3 done」
首先設計乙個尋找p、q最小公倍數m的函式,利用輾轉相除法找到最大公約數n,用數學公式pq=mn求出最小公倍數。
#include
#include
long
long
lcm(
long
long a,
long
long b)
//由於輸入資料達到2^31,用long long型別
//輾轉相除得最大公約數n;
return a*b/n;
//直接返回最小公倍數
}else
return m;
}
然後處理各個case
int
main()
printf
("group 1 done\n");
//第乙個case結束
while
(scanf
("%lld%lld"
,&a,
&b)!=
eof)
printf
("group 2 done\n");
while
(scanf
("%lld%lld"
,&a,
&b)!=
eof)
//輸入結束符之前迴圈輸出
printf
("group 3 done\n");
return0;
}
輸入樣例:
345 16
20 2
13 2
18 42
16 28
0 049 35
^z輸出結果:
72020
26group 1 done
126112
group 2 done
245group 3 done
最小公倍數
最大公倍數最大是兩個數的乘積,兩個數互質 最大公約數是1 幾個數共有的倍數叫做這幾個數的公倍數,其中除0以外最小的乙個公倍數,叫做這幾個數的最小公倍數。記作 a,b 與最小公倍數相對應的概念是最大公約數,a,b的最大公約數記為 a,b 關於最小公倍數與最大公約數,我們有這樣的定理 a,b a,b a...
最小公倍數
問題描述 編寫一函式lcm,求解兩個正整數的最小公倍數。樣例輸入 乙個滿足題目要求的輸入樣例。例 3 5 樣例輸出 與上面樣例對應的輸出。例 15 資料規模和約定 輸入資料中每乙個數的範圍 例 兩個數都小於65536.演算法分析 一般來說,求兩個正整數a b的最小公倍數的演算法思路很簡單,主要分為以...
最小公倍數
求n個數的最小公倍數。輸入 輸入包含多個測試例項,每個測試例項的開始是乙個正整數n 2 n 10 然後是n個正整數。輸出為每組測試資料輸出它們的最小公倍數,每個測試例項的輸出佔一行。你可以假設最後的輸出是乙個32位的整數。樣例輸入 2 4 6 3 2 5 7 樣例輸出 1270 題目 zjgsuto...