b512: 高維度稀疏向量
題目:詳見此
思路:先處理輸入問題,把冒號轉成空白後split。先建立第一個向量的字典,檢查第二個向量,在某維度重疊時相乘,最後加總後輸出。
b537: 分數運算
題目:詳見此
思路:很有趣的數列,越接近1/2的分數越後面。 引入Fraction計算分數(好用),再來依照規則反轉數列。最後輸出答案。 數列反轉的規則:先觀察數列table,發現table[2**(n-1)]==n-1。 而偶數項必大於1,奇數項則必小於1,而且每兩項互為倒數。 所以要推回去就是如果小於一->倒數大於1->減1直到為整數或小於1。 給定分數a/b,並假定他在數列位置=x。 如果a/b小於1,則讓他變成倒數。 如果a/b大於1,則-1。 最後變成整數再*2/+1
b538: 分數運算2
題目:詳見此
思路:直接用fraction作弊,但要算也應該不難,就通分計算再處理約分就好。