FNOI TEST 1 b(高精度除法)

2021-08-17 17:47:55 字數 1657 閱讀 8871

2.整除(b.cpp/c/pas)

【問題描述】 給出兩個正整數 n、m,求 n 除以 m 的商和餘數。 【輸入資料】 第一行乙個正整數 n。 第二行乙個正整數 m。 【輸出資料】 第一行乙個正整數表示 n 除以 m 的商。 第二行乙個正整數表示 n 除以 m 的餘數。 【輸入輸出樣例 1】 b.in b.out 97 15 6 7 【輸入輸出樣例 2】 b.in b.out 919308219 1254 733100 819 【輸入輸出樣例 3】 b.in b.out 37016651297381047164 7 5288093042483006737 5 【輸入輸出樣例 4】 b.in b.out 666666666666666666666666666666 233 2861230329041487839771101573 157 【資料規模和約定】 測試點編號 n m 1 <=100 <=9 2 <=10^7 <=1000 3 <=10^9 <=10000 4 <=10^100 <=9 5 <=1000 6 <=10^50 7 <=10^10000 <=9 8 <=1000 9 <=10^50 10 <=10^200 對於 100%的資料:1<=n<=10^10000,1<=m<=10^200,m<=n

大意就是求兩個大整數相除 注意存在餘數為0的情況

#include

#include

#define n 11000

#define n1 220

int ans[n];

char n1[n],m1[n1];

int n[n],m[n1],nn,mm,ans1,cnt,st=1;

inline void subtract(int st1,int ed)

if (ed-st1+1>mm) n[st1]+=tmp;

while (n[st]==0) st++;

}inline bool judge(int st1,int ed)

}int main()

ans[++cnt]=ans1;

}int num=1;while (ans[num]==0) num++;

for (int i=num;i<=cnt;++i) printf("%d",ans[i]);printf("\n");

if(st>nn) printf("0\n");

for (int i=st;i<=nn;++i) printf("%d",n[i]);

return

0;}

一起看下官方題解吧

2.整除(b) 【30 分】 把 n 和 m 作為 int 讀入,直接計算答案。時間複雜度 o(1)。 【70 分】 m<=10000,考慮從高位到低位逐位確定商,模擬豎式除法,每一位都做乙個 int 以內的除法,求出商以後自然得到餘數。設 len1 為 n 的位數, len2 為 m 的位數, 時間複雜度 o(len1)。 【80 分】 同樣考慮從高位到低位逐位確定商,模擬豎式除法,但由於 m 超過了 longlong, 無法直接做除法。由於商的每一位都<=9,用減法模擬除法即可。實現比較兩個 高精度數的大小和高精度減法即可。由於比大小時 n 的位數為 o(len1),故時間 複雜度 o(9*len1^2),無法通過 9、10 測試點。 【100 分】 注意到減法模擬除法時 n 的前面很多位都是 0,事實上只會涉及到當前的 n 的後 len2+1位,故比大小和高精度減法複雜度均為o(len2),時間複雜度o(9*len1*len2)。

高精度除法(高精度除以高精度)

先貼乙個簡單的高精度除以單精度的 include include include using namespace std int main else ys ys 10 a i 0 while c i 0 i for int j i j 0 j printf d c j if ys printf d ...

高精度除法

演算法思想 反覆做減法,看看從被除數裡最多能減去多少個除數,商就是多少 所以演算法核心是寫乙個大整數的減法函式 反覆呼叫該函式進行減法操作 演算法步驟 用陣列a表示被除數,陣列b表示除數,陣列res表示商 先用被除數a減去除數b得到差的位數k,同時商 1 再用被除數a減去若干個除數b 10 k 不夠...

高精度除法

codevs 1331 西行寺幽幽子 codevs 3118 高精度練習之除法 學了高精度這麼久到現在才開始搞除法txt,總的來說高精除是四則運算 裡最難的。但是,高精度都是可以利用我們平時做算術時的方法手動模擬的,接下來我 們來學一下高精除。思路 首先,除法是建立在減法的基礎上的,我們可以考慮每次...