ACM演算法 數學問題篇 高精度整數

2021-10-03 04:39:14 字數 2776 閱讀 2730

第一題:

思路:對於高精度整數問題,其實很簡單,就是相當於模板函式。只要背住,就沒問題了,具體思路就是用乙個 int 型陣列來存,每四位一存。但注意,用size表示大小的時候,size是從0開始自增的,size表示現在最高可以使用的空白陣列位。

**如下:

#include

#include

struct biginteger

size=0;

}void

set(

char str)

}}void

output()

printf

("\n");

} biginteger operator+(

const biginteger &a)

const

if(carry!=0)

return ret;

}}a,b,c;

char str1[

1002

],str2[

1002];

intmain()

return0;

}

第二題:

思路:這道題就是高精度乘法運算了,機試中的高精度乘法運算一般只要求乙個高精度整數與乙個普通的小整數來進行乘法。

**如下:

#include

#include

struct biginteger

size=0;

}void

set(

int x)

while

(x!=0)

;}void

output()

printf

("\n");

} biginteger operator*(

int x)

const

if(carry!=0)

return ret;

}}a;

intmain()

a.output()

;}return0;

}

第三題:

思路:這道題,其實思路就是普通的進製轉換,涉及到位權相乘的問題。但是其中有大資料,所以就變為高精度整數之間的進製轉換問題。其中涉及到,高精度整數與普通整數的乘積,高精度整數之間求和,高精度整數除以普通整數,高精度整數對普通整數求模等。

**如下:

#include

#include

#define maxdigits 100

struct biginteger

void

set(

int x)

while

(x!=0)

;}void

output()

printf

("\n");

} biginteger operator*(

const

int&x)

const

if(carry!=0)

return ret;

} biginteger operator+(

const biginteger &a)

const

if(carry!=0)

return ret;

} biginteger operator/(

const

int&x)

const

ret.size=0;

for(

int i=

0;i) ret.size++

;return ret;

}int

operator%(

const

int&x)

const

return remainder;

}}a,b,c;

//高精度整數模板類

char str[

10000

],ans[

10000];

intmain()

else t=str[i]

-'a'+10

; a=a+b*t;

b=b*m;

}//轉換為10進製

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;

}

ACM演算法 數學問題篇 運算子

運算子的簡介 定義 通俗地講即求乙個數被另乙個數除後剩餘的餘數。區分 除 除以 a 除以 b a b,表示 a 被 b 除了,即 a 是被除數,b是除數。a 除 b b a,表示用 a 去除 b,這是被動關係,即 b 是被除數,a 是除數。若 a b 其中要求 a 和 b 必須為整形變數 例如 in...

ACM學習筆記之 數學問題 素數

素數是非常簡單的乙個概念,所謂素數,是指恰好有2個約數 的整數,那麼這兩個數就是它本身和1。素數的判定方法有這麼幾種,1 簡單判定,2 飛馬測試 3 r 演算法 4 數域篩法 5 埃式篩法 6 區間篩法 那麼先從最簡單的判素方法學起 1.素性測試 給定整數n,請判斷n是不是素數 includeboo...

ACM選修課1 數學問題

memset 函式 memset 陣列名,1 0 1,sizeof a 重置為1是陣列為任意正數 求乙個數的位數 int log10 n 1,公式log10 i i 必須為double型別 the hardest problem ever include using namespace std in...