Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C ++에서 매우 큰 숫자로 3 자리 반복 숫자를 모두 인쇄하십시오.


이 문제에서는 숫자가 주어집니다. 그리고 반복되는 3자리 숫자를 모두 출력해야 합니다.

문제를 이해하기 위해 예를 들어보겠습니다.

Input: 98769876598765
Output:
   987: 3 times
   876: 3 times
   765: 2 times

이 문제를 해결하기 위해 string에 저장된 큰 수를 사용합니다. 숫자의 자릿수는 문자로 계산됩니다. 이제 처음 세 개의 숫자를 확인한 다음 세 번째 인덱스부터 끝까지 새 숫자를 가져옵니다. 그런 다음 다음 세 자리 숫자가 빈도를 계산하는지 확인합니다. 마지막으로 빈도가 1보다 큰 세 자리 숫자를 모두 출력하십시오.

예시

아래 코드는 우리의 솔루션을 구현합니다.

#include <bits/stdc++.h>
using namespace std;
void printRepeatingNumber(string s) {
   int i = 0, j = 0, val = 0;
   map <int, int> threeDigitNumber;
   val = (s[0] - '0') * 100 + (s[1] - '0') * 10 + (s[2] - '0');
   threeDigitNumber[val] = 1;
   for (i = 3; i < s.length(); i++) {
      val = (val % 100) * 10 + s[i] - '0';
      if (threeDigitNumber.find(val) != threeDigitNumber.end()) {
         threeDigitNumber[val] = threeDigitNumber[val] + 1;
      } else {
         threeDigitNumber[val] = 1;
      }
   }
   for (auto number : threeDigitNumber) {
      int key = number.first;
      int value = number.second;
      if (value > 1)
         cout<<key<<": "<<value<<" times\n";
   }
}
int main() {
   string num = "98769876598765";
   cout<<"All 3 digit repreating numbers are :\n";
   printRepeatingNumber(num);
}

출력

All 3 digit repeating numbers are −
765: 2 times
876: 3 times
987: 3 times