# e566 - Divide, But Not Quite Conquer!
### 題目連結: [e566](https://zerojudge.tw/ShowProblem?problemid=e566)
### 題目解析
* 將整數 n 除以另一個整數 m,直到 n=1 為止
* 每一次除完的結果都會得到一個數字,因此除到最後會得到一個數列
* 題目對於這樣一個數列有特殊限制:
* a 為此數列的名稱,元素一共有 a[1], a[2], ... a[k]
* 所有 a 數列中的數字都會被 m 整除
* a[1] > a[2] > a[3] > ... > a[k]
### 題目類型
流程控制/數值範圍/代數計算
### 範例測資解讀
* 輸入
* 每組測資可能有多行,每一行為兩個數字,分別代表 n, m
* 輸出
* 會有兩種類型
* 整除後的數列
* Boring! 文字
### 其他注意事項
* 輸入說明有提到 n, m 皆小於 `2000000000` 是一個很大的數字
### 程式解析
如果只看題目的描述,都是以代數的方式列出規則,則較難理解
建議直接看舉例的部分,以實際的數字進行計算,比較容易理解
例如:
* n=125, m=5 則會形成數列 125, 25, 5, 1
* n=30, m=3 則會形成數列 30, 10, 3, 1
若以題目的限制決定是何種數列,則可以發現
125, 25, 5, 1 為此題目需要的數列
30, 10, 3, 1 則為 boring
由上述說明可以發現,如果要滿足限制條件的數列,此種數列應為"等比數列"
每做完一次除法後,將整除後的結果存入串列中,等待判斷
### 完整程式碼 (僅提供參考)
``` python=01
while True:
try:
#start
n, m = map(int, input().split())
ans = []
boring = False
if n==0 or m==0:
boring = True
else:
ans.append(n)
while n >1:
if n%m == 0:
n //= m
ans.append(n)
else:
boring = True
break
if boring == True:
print("Boring!")
else:
for i in ans:
print(i, end=' ')
print()
except:
break
```
###### tags: `基礎15題解` `APCS` `ZeroJudge`