---
# System prepended metadata

title: Untitled

---

## 【38】Pandigital multiples積連接(泛位數的倍數)
將192分別與1, 2, 3相乘：
* 192 × 1 = 192
* 192 × 2 = 384
* 192 × 3 = 576
將各個積連接起來，我們得到一個1到9的泛位數192384576，我們稱192384576是192和(1, 2, 3)的「積連接」。
同樣地，還可以將9分別與1, 2, 3, 4, 5相乘，得到的積連接是一個1到9的泛位數918273645。
請求出1到9的最大泛位數，並且它是某個整數與(1, 2, ... ,n)的積連接（n>1）。
#### 檢驗一下已知情況
#### (1)192和(1,2,3)的「積連接」：
![](https://i.imgur.com/XzBjrXu.png)
#### (2) 9和(1,2,3,4,5)的「積連接」：
![](https://i.imgur.com/E8Fqo8R.png)
### 練習1：做一個函式，輸入長度9的數字串，判斷字串是否1~9數字各一個，不缺不重複。
![](https://i.imgur.com/Twb3G57.png)
		 
	上面的方法當然不完整，主要檢查9個數字和是否45，在迴圈中將字串的每一個字元先轉換成整數，再相加判斷是否45，當然依定要輸入長度為9的數字串，這關係到下一個練習的要求。
	有幾個問題：
	(1)字串中有0呢？必然有其他重複字元。(可以在源頭避開0或檢驗時避開)
		例如checkPM("995319906")
	(2)就算沒有0，也可能有重複字元。(可以不管0，只要是能比對出來)
		例如checkPM("992119842")
#### 	重點就是字元1~9不能重複，請你完善這個問題。

＊也可以不用字串輸入，改以數字處理。
＊或者用list處理，因為list可以很簡單排序，例如：
		![](https://i.imgur.com/GRfVGsc.png)
 
	＊int()可以將字元變成數字，而str()可以將數字變成字串，善加利用。

### 練習2：嘗試1到200中，對1~9做積連接
		
1~9不知道需要乘到哪一個，i=1時，需要乘到9，i=9時，需要乘到5，當數字變大時，看起來只要乘到3就夠了。
設計重點：
(1)	隨時將乘出的數字，累加到字串後面，當長度超過或等於9就不必乘算後面，迴圈用break跳出。
(2)	必須長度剛好等於9，而且通過練習1的checkPM()驗證
![](https://i.imgur.com/V0mt7mp.png)
觀察上式，只有ｉ＝1、9、192才是真的對1~9做積連接，所以重點是checkPM()驗證函式的改良。

上例i=9時，918273645是最大值，但還不夠大，
## 請求出1到9的最大泛位數，並且它是某個整數與(1, 2, ... ,n)的積連接（n>1）。
