PAT 大數運算

2021-07-11 11:02:51 字數 2239 閱讀 2888

pat中關於大數的有b1017,a1023,a1024 (a-advance,b-basic)

b1017

本題要求計算a/b,其中a是不超過1000位的正整數,b是1位正整數。你需要輸出商數q和餘數r,使得a = b * q + r成立。

輸入格式:

輸入在1行中依次給出a和b,中間以1空格分隔。

輸出格式:

在1行中依次輸出q和r,中間以1空格分隔。

輸入樣例:

123456789050987654321 7
輸出樣例:
17636684150141093474 3
1 #include 2 #include 3

using

namespace

std;

4const

int n=1010;5

struct

bignum

12};

13 bignum change(char

str)

20 bignum divide(bignum a,int b,int &r)31}

32while(res.len>1 && res.d[res.len-1]==0

)33 res.len--;

34return

res;35}

36void

printbign(bignum t)

40int

main()

4152

return0;

53 }

view code

1 #include 2 #include 3 #include 4

using

namespace

std;

5struct

bignum

12};

13int account[10];//

統計origin中1~9各個數字出現次數

14char origin[21

];15 bignum str_to_bign(char

str)

23return

res;24}

25 bignum multi(bignum a,int

b)33

while(carray!=0)37

return

res;38}

39bool

isnumber(bignum a);

43for(int i=0;i)

44 num[a.d[i]]++;

45for(int i=0;i<10;i++)

46if(num[i]!=account[i])

47return

false;48

return

true;49

}50void

printbign(bignum a)

54int

main()

5566

return0;

67 }

view code

1 #include 2 #include 3

using

namespace

std;

4struct

bignum

11};

12 bignum changetobig(char

str)

19bignum add(bignum a,bignum b)

27if(carray!=0

)28 res.d[res.len++]=carray;

29return

res;30}

31bignum reversenum(bignum a)

38bool

ispalin(bignum a)

44return

true;45

}46void

printbig(bignum a)

50int

main()

5163

printbig(a);

64 printf("

\n%d\n

",step);65}

66return0;

67 }

view code

大數運算之大數相減

大數減法運算 第一次在csdn寫部落格,督促自己不斷學習 鞏固和進步,希望能和大家一起成長 在程式設計實現整數運算時,作為程式猿 媛,我們知道計算機中的int long或者long long的所佔的記憶體空間是有限的,當整數超過一定大小,這些型別就無法表示整數的值,否則資料會被 截斷 無法得到正確的...

大數運算 冪次方運算

以下演算法計算n的m次方 m的定義域是 1,2 31 n的定義域是 0,65535 原理就是按位相乘,處理進製 include include include void main void std vectorvecnum 1,n 用vector儲存大數,首位賦n for int i 0 i m 1...

超長整數運算(大數運算)

說明基於記憶體的有效運用,程式語言中規定了各種不同的資料型態,也因此變數所可以表達的最大整數受到限制,例如123456789123456789這樣的整數就不可能儲存在long變數中 例如c c 等 我們稱這為long數,或俗稱大數運算。解法乙個變數無法表示超長整數,則就使用多個變數,當然這使用陣列最...