41 部落人乘法

2021-10-03 17:24:05 字數 1424 閱讀 7960

41 部落人乘法

問題描述 :

明明熱愛數學,他的爸爸也有意培養明明對數學的興趣。

一次,為了拓展明明的知識面,爸爸給明明講了乙個原始部落人計算乘法的方法:

據說原始部落人以小石子作為計算工具,並用減半和加倍兩種運算就能求得任何兩個整數的乘積。

其規則是:

左邊不斷除2,寫下商,捨去餘數;

右邊不斷加倍,直到左邊變成1為止。

取結果的方法是:

如果某行左邊是偶數,就劃去整個這一行;

如果某行左邊是奇數,右邊剩下的數相加即可。

例如求13與15的乘積的過程是:

計算過程:

13--------15 :13除以2等於6,捨去餘數1,15乘以2等於30;

6---------30 :6除以2等於3,30乘以2等於60;

3---------60 :3除以2等於1,捨去餘數1,60乘以2等於120;

1---------120 :左邊數字為1,停止計算。

取結果過程:

13--------15 :左邊是奇數,取15;

6---------30 :左邊是偶數,劃去;

3---------60 :取60;

1---------120 :取120;

其結果就是: 13*15=15+60+120=195。

明明對爸爸講的這個故事相當感興趣,也自己動手開始模擬上面的過程計算起來。剛開始的時候,明明感覺這樣計算很有趣,但是時間一長,明明就覺得這樣的計算過程很麻煩。他想讓你幫他寫乙個程式,快速的計算出上述乘法最後相加的式子和結果。

明明的問題可以歸結為:給你兩個整數,使用上面描述的乘法過程,輸出最後的相加的式子。

輸入說明 :

你的程式需要從標準輸入裝置(通常為鍵盤)中讀入多組測試資料。每組測試資料佔一行,其中包含兩個整數a和b(1 <= a, b <= 100)。

輸出說明 :

對每組測試資料,你的程式需要向標準輸出裝置(通常為啟動該程式的終端)依次輸出一組對應的答案。格式參見樣例。

輸入範例 :

13 15

2 4輸出範例 :

1315=15+60+120=195

24=8=8

#include

#include

struct multiply

;int

main()

for(i=

1;i<=a;i++)}

i++; sum=0;

//遍歷結構體陣列

printf

("%d*%d="

,a,b)

;for

(j=0

;j)else

else}}

printf

("%d\n"

,sum);}

return0;

}

2150 部落戰爭

題目鏈結 題目大意 給出一張地圖,乙個軍隊要征戰整個土地。一塊土地只能經過一次,有x的地方不能走,軍隊只會走r c個格仔,只會向下走,問最少需要多少軍隊能夠征戰所有的土地 題解 比較 的dag最小路徑覆蓋,把可行點連邊,搞成二分圖就好了 我的收穫 水啊 include include include...

東華oj 高階題第41題 部落人乘法

41 部落人乘法 問題描述 明明熱愛數學,他的爸爸也有意培養明明對數學的興趣。一次,為了拓展明明的知識面,爸爸給明明講了乙個原始部落人計算乘法的方法 據說原始部落人以小石子作為計算工具,並用減半和加倍兩種運算就能求得任何兩個整數的乘積。其規則是 左邊不斷除2,寫下商,捨去餘數 右邊不斷加倍,直到左邊...

BZOJ P2150 部落戰爭

清明節也不能懈怠 雖然已經打了好久了隔膜了 但是你說不做題目也是不行的啊 今天學了乙個公式 dag的最小路徑覆蓋數 dag圖中的節點數 相應二分圖中的最大匹配數.感覺網上的證明也不太好,yy了一下自己的證明 我的證明是這樣的 先說怎麼做 直接每個dag上的點拆點然後建二分圖,原點和s連,然後拆出的點...