fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. int P;
  8. int IT;
  9. char M;
  10. unsigned long long int X;
  11. unsigned long long int Y;
  12. unsigned long long int C = 0;
  13. string N;
  14. string S = "";
  15. string A = "";
  16. string B = "";
  17.  
  18. cin >> P >> N;
  19.  
  20. //while (cin >> P >> N)
  21. //{
  22.  
  23.  
  24.  
  25. if (N.size() % P != 0)
  26. {
  27. X = (N.size() / P) + 1;
  28.  
  29. S.insert(S.end(), '1');
  30.  
  31. for (int i = 0; i < (P - 1); i++)
  32. {
  33. S.insert(S.end(), '0');
  34. }
  35.  
  36. for (unsigned long long int i = 0; i < X; i++)
  37. {
  38. cout << S;
  39. }
  40.  
  41. cout << endl;
  42. }
  43.  
  44. else
  45. {
  46. bool B1 = false; /// Verificador se o primeiro período é composto por 9
  47. bool B2 = false; /// Verdade se o número possuir um digito diferente de 9
  48.  
  49. for (int i = 0; i < P; i++)
  50. {
  51. if (N[i] != '9')
  52. {
  53. if (B1 == true) /// Existe outro digito diferente de 9
  54. {
  55. S[IT] = M;
  56. S.insert(S.end(), (N[i] + 1));
  57. IT = i;
  58. M = N[i];
  59. }
  60.  
  61. else /// Primeiro digito diferente de 9
  62. {
  63. B1 = true;
  64. S.insert(S.end(), (N[i] + 1));
  65. IT = i;
  66. M = N[i];
  67. }
  68. }
  69.  
  70. else
  71. {
  72. S.insert(S.end(), N[i]);
  73. }
  74.  
  75. A.insert(A.end(), N[i]); /// String que contem o periodo original
  76.  
  77. }
  78.  
  79. if (B1 == false) /// Entra nesse 'if' se o primeiro período for somente 9
  80. {
  81. for (unsigned long long int i = P; i != N.size(); i += P) /// Conferir se existe um número diferente de 9 nos outros períodos
  82. {
  83. B = N.substr(i, P);
  84.  
  85. if (A != B)
  86. {
  87. B2 = true;
  88. break;
  89. }
  90. }
  91.  
  92. if (B2 == true) /// Entra nesse 'if' se o número possuir primeiro periodo com 9, mas existe algum algarismo diferente de 9
  93. {
  94. X = N.size() / P;
  95.  
  96. for (unsigned long long int i = 0; i < X; i++)
  97. {
  98. cout << A;
  99. }
  100.  
  101. cout << endl;
  102. }
  103.  
  104. else /// Entra nesse 'if' se o número for composto somente por 9
  105. {
  106. S = "";
  107. X = (N.size() / P) + 1;
  108.  
  109. S.insert(S.end(), '1');
  110.  
  111. for (int i = 0; i < (P - 1); i++)
  112. {
  113. S.insert(S.end(), '0');
  114. }
  115.  
  116. for (unsigned long long int i = 0; i < X; i++)
  117. {
  118. cout << S;
  119. }
  120.  
  121. cout << endl;
  122. }
  123. }
  124.  
  125. else /// Entra nesse 'else' somente se o primeiro periodo possuir um digito diferente de 9
  126. {
  127. X = N.size() / P;
  128.  
  129. bool B3 = false; /// Verdade se existir um periodo maior que o periodo original
  130.  
  131. for (unsigned long long int i = P; i != N.size(); i += P) /// Vai conferir qual é o menor periodo do número
  132. {
  133. B = N.substr(i, P);
  134.  
  135. if (A < B)
  136. {
  137. B3 = true;
  138. break;
  139. }
  140.  
  141. else if (A == B)
  142. {
  143. C++;
  144. }
  145. }
  146.  
  147. if ((B3 == true) or (C == (X - 1)))
  148. {
  149. for (unsigned long long int i = 0; i < X; i++)
  150. {
  151. cout << S;
  152. }
  153.  
  154. cout << endl;
  155. }
  156.  
  157. else
  158. {
  159. for (unsigned long long int i = 0; i < X; i++)
  160. {
  161. cout << A;
  162. }
  163.  
  164. cout << endl;
  165. }
  166. }
  167. //}
  168.  
  169. S = "";
  170. C = 0;
  171. B = "";
  172. A = "";
  173. }
  174.  
  175. return 0;
  176.  
  177. }
  178.  
Success #stdin #stdout 0s 4324KB
stdin
2 12121212121212
stdout
13131313131313