王道計算機機試練習 高精度大整數隨意進製換算

2021-10-07 22:33:11 字數 1466 閱讀 5359

將 m 進製的數 x 轉換為 n 進製的數輸出。

輸入: 輸入的第一行包括兩個整數: m 和 n(2<=m,n<=36) 。 下面的一行輸入乙個數 x,x 是 m 進製的數,現在要求你將 m 進製的數 x 轉換成 n 進製的數輸出。

輸出: 輸出 x 的 n 進製表示的數。

該題初看起來很像一般的進製轉換,但提示中明確告知,輸入會有較大的數 據,即我們為了完成本例需要的進製轉換,需要使用高精度整數。同時,考慮到 進製轉換的內容,我們的高精度整數需要進行以下運算:高精度整數與普通整數 的求積,高精度整數之間求和,高精度整數除以普通整數,高精度整數對普通整 數求模等。

#include

#include

#include

#define maxdigits 100

struct biginteger

void

set(

int x)

while

(x !=0)

;}void

output()

printf

("\n");

} biginteger operator*

(int x)

const

if(carry !=0)

return ret;

} biginteger operator +

(const biginteger& a)

const

if(carry !=0)

return ret;

} biginteger operator /

(int x)

const

ret.size =0;

for(

int i =

0; i < maxdigits; i++

)//若存在非零位,確定最高的非零位作為最高有效位

ret.size++

;return ret;

}int operator %

(int x)

const

return remainder;

//返回餘數

}}a,b,c;

char str[

10000];

char ans[

10000];

intmain()

else

a = a + b * t;

b = b * m;

}int size =0;

dowhile

(a.digit[0]

!=0|| a.size !=1)

;for

(int i = size -

1; i >=

0; i--

)printf

("%c"

, ans[i]);

printf

("\n");

}return0;

}

王道機試練習 高精度大整數加法

實現乙個加法器,使其能夠輸出 a b 的值。輸入 輸入包括兩個數 a 和 b,其中 a 和 b 的位數不超過 1000 位。輸出 可能有多組測試資料,對於每組資料,輸出 a b 的值。include include struct biginteger void set char str void o...

王道計算機機試練習 哈夫曼樹

題目描述 哈夫曼樹,第一行輸入乙個數 n,表示葉結點的個數。需要用這些葉結點生 成哈夫曼樹,根據哈夫曼樹的概念,這些結點有權值,即 weight,題目需要輸出 所有結點的值與權值的乘積之和。1 將所有結點放入集合 k。2 若集合 k 中剩餘結點大於 2 個,則取出其中權值最小的兩個結點,構造他 們同...

王道計算機機試練習 動態規劃完全揹包儲存罐

有乙個儲蓄罐,告知其空時的重量和當前重量,並給定一些錢幣 的價值和相應的重量,求儲蓄罐中最少有多少現金。由於每個錢幣的數量都可以有任意多,所以該問題為完全揹包問題。但是在該例中,完全揹包有兩處變化,首先,要求的不再是最大值,而變為了最小值,這就要求我們在狀態轉移時,在 dp j 和 dp j lis...