fork(1) 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. cout << "adres = " << (&result) << endl;
  38. int zasieg1 = strlen(value1);
  39. int zasieg2 = strlen(value2);
  40. /*zmienne*/
  41. int i,j;
  42. int mnozenie_tablic, dziesiatki;
  43.  
  44. if(zasieg1>=zasieg2)
  45. {
  46. for(i=0; i<zasieg2; i++)
  47. {
  48. dziesiatki = 0;
  49. for(j=0; j<zasieg1; j++)
  50. {
  51. if(i==0)
  52. {
  53. mnozenie_tablic=((int)value2[i]-48)*((int)value1[j]-48) + dziesiatki;
  54. if(mnozenie_tablic>9)
  55. {
  56. dziesiatki=mnozenie_tablic/10;
  57. }
  58. else
  59. {
  60. dziesiatki=0;
  61. }
  62. result[i+j] = char((mnozenie_tablic%10) + 48);
  63. if(zasieg1>1 && j==zasieg1-1)
  64. {
  65. result[i+j+1] = char(mnozenie_tablic/10 + 48);
  66. }
  67. }
  68. else
  69. {
  70. mnozenie_tablic=((int)value2[i]-48)*((int)value1[j]-48) + int(result[j+i])-48 + dziesiatki;
  71. if(mnozenie_tablic>9)
  72. {
  73. dziesiatki=mnozenie_tablic/10;
  74. }
  75. else
  76. {
  77. dziesiatki=0;
  78. }
  79. result[i+j] = char(mnozenie_tablic%10 + 48);
  80. if(j==zasieg1-1)
  81. {
  82. if(i!=zasieg2-1)
  83. result[i+j+1] = char(mnozenie_tablic/10 + 48);
  84. if(i==zasieg2-1 && mnozenie_tablic>=10)
  85. result[i+j+1] = char(mnozenie_tablic/10 + 48);
  86. }
  87. }
  88. }
  89. }
  90. reverse(result,result+strlen(result));
  91. cout << result << endl;
  92. memset(result,0,sizeof(char)*20002);
  93. }
  94. else
  95. {
  96. for(i=0; i<zasieg1; i++)
  97. {
  98. dziesiatki = 0;
  99. for(j=0; j<zasieg2; j++)
  100. {
  101. if(i==0)
  102. {
  103. mnozenie_tablic=((int)value1[i]-48)*((int)value2[j]-48) + dziesiatki;
  104. if(mnozenie_tablic>9)
  105. {
  106. dziesiatki=mnozenie_tablic/10;
  107. }
  108. else
  109. {
  110. dziesiatki=0;
  111. }
  112. result[i+j] = char((mnozenie_tablic%10) + 48);
  113. if(zasieg2>1 && j==zasieg2-1)
  114. {
  115. result[i+j+1] = char(mnozenie_tablic/10 + 48);
  116. }
  117. }
  118. else
  119. {
  120. mnozenie_tablic=((int)value1[i]-48)*((int)value2[j]-48) + int(result[j+i])-48 + dziesiatki;
  121. if(mnozenie_tablic>9)
  122. {
  123. dziesiatki=mnozenie_tablic/10;
  124. }
  125. else
  126. {
  127. dziesiatki=0;
  128. }
  129. result[i+j] = char(mnozenie_tablic%10 + 48);
  130. if(j==zasieg2-1)
  131. {
  132. if(i!=zasieg1-1)
  133. result[i+j+1] = char(mnozenie_tablic/10 + 48);
  134. if(i==zasieg1-1 && mnozenie_tablic>=10)
  135. result[i+j+1] = char(mnozenie_tablic/10 + 48);
  136. }
  137. }
  138. }
  139. }
  140. reverse(result,result+strlen(result));
  141. cout << result << endl;
  142. memset(result,0,sizeof(char)*20002);
  143. }
  144. }
  145.  
  146.  
  147.  
Success #stdin #stdout 0s 3456KB
stdin
2
111 1111
34 56
stdout
adres = 0xbfe7ab6e
123321
adres = 0xbfe7ab6e
121904