大數對大數求商和求餘

2021-09-26 05:35:03 字數 1908 閱讀 5103

題目:輸入m和n,m和n為正整數,輸出m/n,m%n的值。(1<=m<=10的100次方,1<=n<=10的9次方)

思路很簡單 我直接複製貼上啦

舉個例子:>> 54367256 / 97, 54367256 % 97

我們這樣模擬:

str1 - str2 = str1

54367256 - 9700000 = 44667256       (在str2末尾填充0,讓str1,str2相差一位) ,相差 100000 倍

44667256 - 9700000 = 34967256 ,相差 100000 倍

34967256 - 9700000 = 25267256

25267256 - 9700000 = 15567256

15567256 - 9700000 = 5867256

5867256 - 970000 = 4897256 ,相差 10000 倍

4897256 - 970000 = 3927256

3927256 - 970000 = 2957256

2957256 - 970000 = 1987256

1987256 - 970000 = 1017256

1017256 - 970000 = 47256

47256 - 9700 = 37556 ,相差 100 倍

37556 - 9700 = 27856

27856 - 9700 = 18156

18156 - 9700 = 8456

8456 - 970 = 7486

7486 - 970 = 6516

6516 - 970 = 5546

5546 - 970 = 4576

4576 - 970 = 3606

3606 - 970 = 2636

2636 - 970 = 1666

1666 - 970 = 696

696 - 97 = 599 ,相差 1 倍

599 - 97 = 502

502 - 97 = 405

405 - 97 = 308

308 - 97 = 211

211 - 97 = 114 ,相差 1 倍

114 - 97 = 17 (此時:str1 < strt,迴圈結束)

把相差的倍數全部加起來,就是商

最後的那個就是餘數。

接下來是**

#include #include using namespace std;

void subb(char *str1, int i) //借位函式

else

}void subtract(char *str1, char *str2) //減法函式

str1[i] = str1[i] - str2[j] + '0';

}for(i=0; i'9')

}void addition(char *str3, char *str4) //加法函式

}if(str3[0] == '0')

}int relation(char *str1, char *str2) //大小比較函式

return 0;

}else

return -1;

}int main()

str4[l] = '\0';

str2[j] = '\0';

subtract(str1, str2);

str2[k] = '\0';

}else

addition(str3, str4);

}cout << "商 = " << str3 << endl;

cout << "餘 = " << str1 << endl;

return 0;

}

高精度問題之大數相除和求餘

實現的是大數跟int型別的相除和求餘 ac 如下 include include using namespace std void bigdivision char src,int num,char sign else if sign for int i 0 i k i cout res i cou...

C 實現大數運算(加減乘除求餘)

我本身想寫 實現整數型大資料的加減乘除和求餘,結果寫著寫著想著連小數運算的也一起寫上 反正加的 不多 電腦是死的,人是活的,當資料超出範圍時,我們可以想其他方法去算,在這裡,我使用string類來存資料,string類的容量足夠大,相信夠一般大資料使用了吧。main.cpp include incl...

C語言 大數取餘

大數取餘數 陣列 今天做學校的oj時遇到一題,問題可見一下截圖 查遍各大論壇,都沒有遇到合適的方法,普通方法不可用,要採用陣列的形式。被除數超過long long型別,不能採用常規思路,否則會出現wrong answer。值得注意的一點,是不能用double等實數型別,只有整數型別的才可以求餘數 因...