題目原文
題目內容
略
輸入說明:
略輸出說明:
略
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");
}
}
}
程式碼打包:解法一
沒有留言:
張貼留言