題目原文
題目內容
略
輸入說明:
略輸出說明:
略
Sample Input
125 5
30 3
80 2
81 3
Sample Output
125 25 5 1
Boring!
Boring!
81 27 9 3 1
解法
簡單來說,會給你兩個值;可以直接看成一個是被除數,一個是除數。
然後如果這兩個數沒有辦法被整除到剩下1就印Boring,比較要注意的是兩數之間的大小,正常來說第一個數字要比第二個數字大,這題組主要用迴圈和矩陣來運算完成。
(以上資料來源:大學程式能力檢定Collegiate Programming Examination(CPE))
程式碼解答
#include <stdio.h> #include <stdlib.h> #define MAX 100000 int main() { int n, m; int a[MAX]; int i, j; while(scanf("%d %d", &n, &m)==2)///要輸入兩個值才執行 { i=0; a[i++] = n; int divisible = 1;///判斷條件之一divisible = 1可以整除 =0不可整除 int key = (m==1 || m>n)? 0: 1;///判斷條件之二key m==1 或者 m>n 則給予0 while(a[i-1] != 1&&key == 1 )///如果已經除到1 了 則跳出迴圈 { if(a[i-1]%m!=0)///如果不整除 則讓判斷條件一等於零並且跳出迴圈 { divisible = 0; break; } a[i]= a[i-1]/m; ///運算過程 i = i + 1; } if(divisible && key ==1)///列印時先驗證所有條件是否成立 { for(j=0; j<i; j++) { printf ("%d", a[j]); printf((j+1 == i)? "\n" : " "); } } else { printf("Boring!\n"); } } }
程式碼打包:解法一
沒有留言:
張貼留言