Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- int main()
- {
- vector<int> a;
- vector<int> b;
- int n, m;
- cin >> n >> m;
- int um = n + m + 1;
- //a.resize(n+1);
- //b.resize(m+1);
- for (int i = 0; i <= n; i++)
- {
- int t;
- cin >> t;
- a.push_back(t);
- }
- for (int i = n + 1; i < um; i++)
- a.push_back(0);
- for (int i = 0; i <= m; i++)
- {
- int t;
- cin >> t;
- b.push_back(t);
- }
- for (int i = m + 1; i < um; i++)
- b.push_back(0);
- vector<int> slo;
- vector<int> umno;
- vector<int> del;
- int nn;
- if (n > m)
- {
- for (int i = 0; i <= m; i++)
- {
- slo.push_back((a[i] + b[i]) % 998244353);
- }
- for (int i = m + 1; i <= n; i++)
- {
- slo.push_back(a[i]);
- }
- nn = n + 1;
- }
- else
- {
- for (int i = 0; i <= n; i++)
- {
- slo.push_back((a[i] + b[i]) % 998244353);
- }
- for (int i = n + 1; i <= m; i++)
- {
- slo.push_back(b[i]);
- }
- nn = m + 1;
- }
- bool y = false;
- for (int i = slo.size() - 1; i >= 0; i--)
- {
- if (slo[i] % 998244353 == 0 && !y)
- {
- slo[i] = -100;
- nn--;
- }
- else y = true;
- }
- cout << nn - 1 << "\n";
- for (int i = 0; i < nn; i++)
- {
- if (slo[i] >= 0)
- cout << slo[i] << " ";
- }
- cout << "\n";
- umno.resize(um);
- for (int i = 0; i < 10000; i++)
- {
- del.push_back(0);
- }
- for (int i = 0; i < um; i++)
- umno[i] = 0;
- for (int i = a.size() - 1; i < 100000; i++)
- a.push_back(0);
- for (int i = b.size() - 1; i < 100000; i++)
- b.push_back(0);
- for (int i = 0; i < um; i++)
- {
- for (int j = 0; j <= i; j++)
- {
- umno[i] += ((a[j] * b[i - j]) % 998244353);
- umno[i] %= 998244353;
- }
- }
- bool x = false;
- for (int i = umno.size() - 1; i >= 0; i--)
- {
- if (umno[i] % 998244353 == 0 && !x)
- {
- umno[i] = -100;
- um--;
- }
- else x = true;
- }
- cout << um - 1 << "\n";
- for (int i = 0; i < um; i++)
- if (umno[i] >= 0)
- {
- cout << umno[i] % 998244353 << " ";
- }
- cout << "\n";
- for (int i = 0; i < 1000; i++)
- {
- del[i] += a[i];
- del[i] %= 998244353;
- for (int j = 1; j <= i; j++)
- del[i] = (del[i] - ((b[j]*del[i - j]) % 998244353)) % 998244353 % 998244353;
- cout << (del[i] + 998244353) % 998244353 << " ";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement