C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++で大きな数値に含まれる3桁の繰り返し数列をすべて検出・表示する方法


この問題では、1つの数値が与えられ、その中に出現する3桁の繰り返し数列をすべて出力することが求められます。

まず、例を見て問題を理解しましょう。

入力: 98769876598765
出力:
    987: 3回
    876: 3回
    765: 2回

この問題を解くには、非常に大きな数値を文字列として格納して扱います。数値の各桁は文字として処理されます。まず最初の3桁をチェックし、その後、インデックス3から末尾まで順に走査しながら、スライドウィンドウ方式で新たな3桁の数を取得していきます。各3桁の数の出現頻度をカウントし、最後に頻度が1を超える(2回以上出現する)3桁の数をすべて出力します。

実装例

以下のコードは、この解法を実装したものです。

#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 repeating numbers are :\n";
    printRepeatingNumber(num);
}

出力結果

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

  1. C++でデューデニー数(Dudeney Number)を判定する方法

    デューデニー数とは? デューデニー数(Dudeney Number)とは、数論で定義される特殊な自然数の一つです。「ある自然数が、別の自然数の完全立方数に等しく、かつ元の数の各桁の数字和が、その立方根となる数の桁和と一致する」とき、その数をデューデニー数と呼びます(Wikipediaより)。 この数は、イギリスの著名なパズル作家であるヘンリー・デューデニー(Henry Dudeney)によって発見されました。数学的には次の式で表されます。 有名な例としては 512 = 8³ が挙げられます。512 の桁和は 5 + 1 + 2 = 8 となり、立方根である 8 と一致するため、512 はデ

  2. C++で3と5の両方で割り切れる数をすべて出力するプログラム

    はじめにこのチュートリアルでは、指定された数値未満のうち、3と5の両方で割り切れる数をすべて出力するC++プログラムについて解説します。具体的には、数値Nが与えられたとき、N未満の数の中から3と5の両方で割り切れるすべての数を見つけて出力するのがタスクです。アルゴリズムの考え方この問題は、剰余演算子(%)を使うことでシンプルに解くことができます。手順は以下の通りです。0からN-1までの数値を順番に調べます。各数値について、「3で割った余りが0」かつ「5で割った余りが0」であるかを判定します。両方の条件を満たす数値だけを出力します。なお、3と5の両方で割り切れる数は15の倍数と同じであるため、条