Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. vector<int> a;
  9. vector<int> b;
  10. int n, m;
  11. cin >> n >> m;
  12. int um = n + m + 1;
  13. //a.resize(n+1);
  14. //b.resize(m+1);
  15. for (int i = 0; i <= n; i++)
  16. {
  17. int t;
  18. cin >> t;
  19. a.push_back(t);
  20. }
  21. for (int i = n + 1; i < um; i++)
  22. a.push_back(0);
  23. for (int i = 0; i <= m; i++)
  24. {
  25. int t;
  26. cin >> t;
  27. b.push_back(t);
  28. }
  29. for (int i = m + 1; i < um; i++)
  30. b.push_back(0);
  31. vector<int> slo;
  32. vector<int> umno;
  33. vector<int> del;
  34. int nn;
  35. if (n > m)
  36. {
  37. for (int i = 0; i <= m; i++)
  38. {
  39. slo.push_back((a[i] + b[i]) % 998244353);
  40. }
  41. for (int i = m + 1; i <= n; i++)
  42. {
  43. slo.push_back(a[i]);
  44. }
  45. nn = n + 1;
  46. }
  47. else
  48. {
  49. for (int i = 0; i <= n; i++)
  50. {
  51. slo.push_back((a[i] + b[i]) % 998244353);
  52. }
  53. for (int i = n + 1; i <= m; i++)
  54. {
  55. slo.push_back(b[i]);
  56. }
  57. nn = m + 1;
  58. }
  59. bool y = false;
  60. for (int i = slo.size() - 1; i >= 0; i--)
  61. {
  62. if (slo[i] % 998244353 == 0 && !y)
  63. {
  64. slo[i] = -100;
  65. nn--;
  66. }
  67. else y = true;
  68. }
  69. cout << nn - 1 << "\n";
  70. for (int i = 0; i < nn; i++)
  71. {
  72. if (slo[i] >= 0)
  73. cout << slo[i] << " ";
  74. }
  75. cout << "\n";
  76. umno.resize(um);
  77. for (int i = 0; i < 10000; i++)
  78. {
  79. del.push_back(0);
  80. }
  81. for (int i = 0; i < um; i++)
  82. umno[i] = 0;
  83. for (int i = a.size() - 1; i < 100000; i++)
  84. a.push_back(0);
  85. for (int i = b.size() - 1; i < 100000; i++)
  86. b.push_back(0);
  87. for (int i = 0; i < um; i++)
  88. {
  89. for (int j = 0; j <= i; j++)
  90. {
  91. umno[i] += ((a[j] * b[i - j]) % 998244353);
  92. umno[i] %= 998244353;
  93. }
  94. }
  95. bool x = false;
  96. for (int i = umno.size() - 1; i >= 0; i--)
  97. {
  98. if (umno[i] % 998244353 == 0 && !x)
  99. {
  100. umno[i] = -100;
  101. um--;
  102. }
  103. else x = true;
  104. }
  105. cout << um - 1 << "\n";
  106. for (int i = 0; i < um; i++)
  107. if (umno[i] >= 0)
  108. {
  109. cout << umno[i] % 998244353 << " ";
  110. }
  111. cout << "\n";
  112. for (int i = 0; i < 1000; i++)
  113. {
  114. del[i] += a[i];
  115. del[i] %= 998244353;
  116. for (int j = 1; j <= i; j++)
  117. del[i] = (del[i] - ((b[j]*del[i - j]) % 998244353)) % 998244353 % 998244353;
  118. cout << (del[i] + 998244353) % 998244353 << " ";
  119. }
  120. return 0;
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement