fork(1) download
  1. #include <iostream>
  2. #include <cassert>
  3.  
  4. using namespace std;
  5.  
  6. int count(char* word1, int counter, int i) {
  7. if (word1[i] != word1[i + 1]) {
  8. return counter;
  9. }
  10. return count(word1, counter+1, i + 1);
  11. }
  12.  
  13.  
  14. void check_number() {
  15. char word1[200];
  16. char word2[200];
  17. int counter = 1;
  18. int i=0, j=0;
  19. cin >> word1;
  20. for (word1[i]; word1[i] != '\0'; i++) {
  21. counter = count(word1, counter, i);
  22. if (counter > 2) {
  23. word2[j] = word1[i];
  24. j++;
  25. i += counter - 1;
  26.  
  27. if (counter < 10) {
  28. word2[j] = '0' + counter;
  29. j++;
  30. }
  31. else if (counter >= 10 && counter < 100) {
  32. word2[j] = '0' + counter / 10;
  33. j++;
  34. word2[j] = '0' + counter % 10;
  35. j++;
  36. }
  37. else if (counter >= 100) {
  38. word2[j] = '0' + counter / 100;
  39. j++;
  40. word2[j] = '0' + (counter %100)%10;
  41. j++;
  42. word2[j] = '0' + counter %10;
  43. j++;
  44. }
  45. counter = 1;
  46. }
  47. else {
  48. word2[j] = word1[i];
  49. j++;
  50. counter = 1;
  51. }
  52. }
  53. word2[j] = '\0';
  54. cout << word2 << endl;
  55.  
  56. }
  57.  
  58.  
  59. int main() {
  60. int n;
  61. cin >> n;
  62. for (int i = 0; i < n; i++) {
  63. check_number();
  64. }
  65. return 0;
  66. }
  67.  
Success #stdin #stdout 0.01s 5552KB
stdin
4
OPSS
ABCDEF
ABBCCCDDDDEEEEEFGGHIIJKKKL
AAAAAAAAAABBBBBBBBBBBBBBBB
stdout
OPSS
ABCDEF
ABBC3D4E5FGGHIIJK3L
A10B16