fork(5) download
  1. #include <iostream>
  2. #include <cstring>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. void multiple(const char *value1,const char *value2);
  7. int main() {
  8. ios_base::sync_with_stdio(0);
  9. char value1[10001], value2[10001];
  10. int t;
  11. cin >> t;
  12.  
  13. while(t--)
  14. {
  15. cin>>value1>>value2;
  16. if(value1[0]==48 || value2[0]==48)
  17. {
  18. cout << "0" << endl;
  19. }
  20. else
  21. {
  22. reverse(value1,value1+strlen(value1));
  23. reverse(value2,value2+strlen(value2));
  24. multiple(value1, value2);
  25. }
  26. memset(value1,0,sizeof(char)*10001);
  27. memset(value2,0,sizeof(char)*10001);
  28.  
  29. }
  30. return 0;
  31.  
  32. }
  33.  
  34. void multiple(const char *value1,const char *value2)
  35. {
  36. char result[20002];
  37. int zasieg1 = strlen(value1);
  38. int zasieg2 = strlen(value2);
  39. /*zmienne*/
  40. int i,j;
  41. int mnozenie_tablic, dziesiatki;
  42.  
  43. if(zasieg1>=zasieg2)
  44. {
  45. for(i=0; i<zasieg2; i++)
  46. {
  47. dziesiatki = 0;
  48. for(j=0; j<zasieg1; j++)
  49. {
  50. if(i==0)
  51. {
  52. mnozenie_tablic=((int)value2[i]-48)*((int)value1[j]-48) + dziesiatki;
  53. if(mnozenie_tablic>9)
  54. {
  55. dziesiatki=mnozenie_tablic/10;
  56. }
  57. else
  58. {
  59. dziesiatki=0;
  60. }
  61. result[i+j] = char((mnozenie_tablic%10) + 48);
  62. if(zasieg1>1 && j==zasieg1-1)
  63. {
  64. result[i+j+1] = char(mnozenie_tablic/10 + 48);
  65. }
  66. }
  67. else
  68. {
  69. mnozenie_tablic=((int)value2[i]-48)*((int)value1[j]-48) + int(result[j+i])-48 + dziesiatki;
  70. if(mnozenie_tablic>9)
  71. {
  72. dziesiatki=mnozenie_tablic/10;
  73. }
  74. else
  75. {
  76. dziesiatki=0;
  77. }
  78. result[i+j] = char(mnozenie_tablic%10 + 48);
  79. if(j==zasieg1-1)
  80. {
  81. if(i!=zasieg2-1)
  82. result[i+j+1] = char(mnozenie_tablic/10 + 48);
  83. if(i==zasieg2-1 && mnozenie_tablic>=10)
  84. result[i+j+1] = char(mnozenie_tablic/10 + 48);
  85. }
  86. }
  87. }
  88. }
  89. reverse(result,result+strlen(result));
  90. cout << result << endl;
  91. memset(result,0,sizeof(char)*20002);
  92. }
  93. else
  94. {
  95. for(i=0; i<zasieg1; i++)
  96. {
  97. dziesiatki = 0;
  98. for(j=0; j<zasieg2; j++)
  99. {
  100. if(i==0)
  101. {
  102. mnozenie_tablic=((int)value1[i]-48)*((int)value2[j]-48) + dziesiatki;
  103. if(mnozenie_tablic>9)
  104. {
  105. dziesiatki=mnozenie_tablic/10;
  106. }
  107. else
  108. {
  109. dziesiatki=0;
  110. }
  111. result[i+j] = char((mnozenie_tablic%10) + 48);
  112. if(zasieg2>1 && j==zasieg2-1)
  113. {
  114. result[i+j+1] = char(mnozenie_tablic/10 + 48);
  115. }
  116. }
  117. else
  118. {
  119. mnozenie_tablic=((int)value1[i]-48)*((int)value2[j]-48) + int(result[j+i])-48 + dziesiatki;
  120. if(mnozenie_tablic>9)
  121. {
  122. dziesiatki=mnozenie_tablic/10;
  123. }
  124. else
  125. {
  126. dziesiatki=0;
  127. }
  128. result[i+j] = char(mnozenie_tablic%10 + 48);
  129. if(j==zasieg2-1)
  130. {
  131. if(i!=zasieg1-1)
  132. result[i+j+1] = char(mnozenie_tablic/10 + 48);
  133. if(i==zasieg1-1 && mnozenie_tablic>=10)
  134. result[i+j+1] = char(mnozenie_tablic/10 + 48);
  135. }
  136. }
  137. }
  138. }
  139. reverse(result,result+strlen(result));
  140. cout << result << endl;
  141. memset(result,0,sizeof(char)*20002);
  142. }
  143. }
  144.  
  145.  
  146.  
Success #stdin #stdout 0s 3412KB
stdin
Standard input is empty
stdout
Standard output is empty