Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int StringtoNum(char c) {
- return c - '0';
- }
- char NumtoString(int n) {
- return (char)(n + 48);
- }
- // lam 2 xau co do dai bang nhau
- void ChuanHoa(string &a, string &b) {
- int l1 = a.length(), l2 = b.length();
- if(l1 >= l2)
- // chen vao dau cua b cac ky tu '0'
- b.insert(0, l1 - l2, '0');
- else
- // chen vao dau cua a cac ky tu '0'
- a.insert(0, l2-l1, '0');
- }
- string SUM(string a, string b) {
- string s = "";
- ChuanHoa(a,b);
- int tmp = 0;
- for(int i = a.length()-1; i >= 0; i--)
- {
- // tinh tong tung doi mot
- tmp = StringtoNum(a[i]) + StringtoNum(b[i]) + tmp;
- // gan phan don vi vao
- s.insert(0,1, NumtoString(tmp%10));
- // lay lai phan hang chuc
- tmp = tmp / 10;
- }
- // neu hang chuc > 0 thi them vao KQ
- if(tmp > 0)
- s.insert(0, 1, NumtoString(tmp));
- return s;
- }
- // nhan so co 1 chu so voi so co nhieu chu so, lam tuong tu nhu phep cong
- string TichNho(char a, string b) {
- string s = "";
- int tmp = 0;
- for(int i = b.length()-1; i >= 0; i--)
- {
- tmp = StringtoNum(a) * StringtoNum(b[i]) + tmp;
- s.insert(0,1, NumtoString(tmp%10));
- tmp = tmp / 10;
- }
- if(tmp > 0)
- s.insert(0, 1, NumtoString(tmp));
- return s;
- }
- string TICH(string a, string b) {
- string s = "";
- int le = a.length();
- string s1[le];
- // nhan tung chu so cua a voi b sau do cong don vao
- for(int i = le-1; i >= 0; i--) {
- // nhan tung so cua a voi b
- s1[i] = TichNho(a[i], b);
- s1[i].insert(s1[i].length(), le-i-1, '0');
- // cong don theo cach cong so lon
- s = SUM(s, s1[i]);
- }
- return s;
- }
- string a, b;
- int main() {
- int t; cin >> t;
- getline(cin, a);
- while(t--) {
- getline(cin, a);
- getline(cin, b);
- cout << "Tong: " << SUM(a, b) << '\n';
- cout << "Tich: " << TICH(a, b) << '\n';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment