基础(二) 基础算法 第一章 高精度计算
1307题解【例1.3】高精度乘法
笔记
最关键的就是C[i + j] = a[i] * b[j]
感觉上面的题目也不是每一道都需要我去做,反正我看到有人给了视频题解,如果自己能看懂的话,自己就做,看不懂的话就不做了.
感觉先把acwing的算法基础课看完才是最关键的.然后去看pat的测试,自己也参加一次.包括刷leetcode什么的.
要我说,还是先放着这部分.之后就算有时间做这部分,自己也不打算打卡,可能真的用不到了.
打卡记录
1308题解
1309题解
1168题解大整数加法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include <iostream> #include <vector> using namespace std;const int N = 210 ;vector<int > add (vector<int > &A, vector<int > &B) ;int main (void ) { string a, b; cin >> a >> b; vector<int > A, B; for (int i = a.size () - 1 ; i >= 0 ; i--) A.push_back (a[i] - '0' ); for (int i = b.size () - 1 ; i >= 0 ; i--) B.push_back (b[i] - '0' ); auto C = add (A, B); for (int i = C.size () - 1 ; i >= 0 ; i--) printf ("%d" , C[i]); return 0 ; } vector<int > add (vector<int > &A, vector<int > &B) { vector<int > C; int t = 0 ; for (int i = 0 ; i < A.size () || i < B.size (); i++) { if (i < A.size ()) t += A[i]; if (i < B.size ()) t += B[i]; C.push_back (t % 10 ); t /= 10 ; } if (t) C.push_back (1 ); while (C.size () > 1 && C.back () == 0 ) C.pop_back (); return C; }
1169题解大整数减法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 #include <iostream> #include <vector> using namespace std;const int N = 210 ;bool cmp (vector<int > &A, vector<int > &B) ;vector<int > sub (vector<int > &A, vector<int > &B) ;int main (void ) { string a, b; cin >> a >> b; vector<int > A, B; for (int i = a.size () - 1 ; i >= 0 ; i--) A.push_back (a[i] - '0' ); for (int i = b.size () - 1 ; i >= 0 ; i--) B.push_back (b[i] - '0' ); if (cmp (A, B)) { auto C = sub (A, B); for (int i = C.size () - 1 ; i >= 0 ; i--) printf ("%d" , C[i]); } else { auto C = sub (B, A); printf ("-" ); for (int i = C.size () - 1 ; i >= 0 ; i--) printf ("%d" , C[i]); } return 0 ; } bool cmp (vector<int > &A, vector<int > &B) { if (A.size () != B.size ()) return A.size () > B.size (); for (int i = A.size () - 1 ; i >= 0 ; i--) if (A[i] != B[i]) return A[i] > B[i]; return true ; } vector<int > sub (vector<int > &A, vector<int > &B) { vector<int > C; int t = 0 ; for (int i = 0 ; i < A.size (); i++) { t = A[i] - t; if (i < B.size ()) t -= B[i]; C.push_back ((t + 10 ) % 10 ); if (t < 0 ) t = 1 ; else t = 0 ; } while (C.size () > 1 && C.back () == 0 ) C.pop_back (); return C; }
1170题解
1171题解
1172题解
1173题解
1174题解大整数乘法
其余题目怎么感觉都不太会的样子,难道比acwing还难吗.既然感觉acwing里面没有教,那就直接在acking里面找视频题解学习
https://www.bilibili.com/video/BV1NW4y1m7Mp/?vd_source=d84f08a0531e04d6d41c38180cce9fb5&spm_id_from=333.788.videopod.episodes&p=10
这个博客是总结了能找到的资源帖,更加全面
https://blog.csdn.net/dllglvzhenfeng/article/details/134395667
1175题解
💡 有关XXX(自己补充)上的问题,欢迎您在底部评论区留言,一起交流~