C++プログラムの多数の場合は37で割り切れる
このチュートリアルでは、与えられた多数が37で割り切れるかどうかをチェックするプログラムを作成します。
ここでは少し数学を使用します。問題を解決するための手順を見てみましょう。
-
番号を初期化します。
-
指定された数値の長さが3で割り切れない場合は、数値の先頭にゼロを追加して、長さを3で割り切れるようにします。
-
数字を3桁のグループに分けて追加します。
-
結果の合計が37で割り切れる場合、指定された数値は37で割り切れます。
-
結果の合計が4桁の数字の場合は、2からの手順を繰り返します。
-
指定された数が37で割り切れるかどうかを印刷します。
例
コードを見てみましょう。
#include <bits/stdc++.h>
using namespace std;
bool isNumberDivisibleBy37(string number, int n) {
if (number == "0") {
return 0;
}
if (n % 3 == 1){
number = "00"+ number;
n += 2;
}
else if (n % 3 == 2){
number = "0"+ number;
n += 1;
}
int groups_sum = 0;
while (n != 0){
string group = number.substr(n - 3, n);
int group_value = (group[0] - '0') * 100 + (group[1] - '0') * 10 + (group[2] - '0') * 1;
groups_sum += group_value;
n = n - 3;
}
if (groups_sum >= 1000) {
string new_number = to_string(groups_sum);
return isNumberDivisibleBy37(new_number, new_number.length());
}
else {
return groups_sum % 37 == 0;
}
}
int main() {
string number = "4048675309";
if (isNumberDivisibleBy37(number, 10)) {
cout << "Yes" << endl;
}
else {
cout << "No" << endl;
}
return 0;
} 出力
上記のコードを実行すると、次の結果が得られます。
Yes
結論
チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。
-
C++での10進数から16進数への変換プログラム
10進数を入力として指定すると、タスクは指定された10進数を16進数に変換することです。 コンピューターの16進数は16を底とし、10進数は10を底とし、0〜9の値で表されますが、16進数は0〜15から始まる数字で、10はA、11はB、12はC、 Dとして13、Eとして14、Fとして15。 10進数を16進数に変換するには、指定された手順に従います- まず、指定された数値を変換数値の基本値で除算します。例: 6789を16を底とする16進数に変換し、商を取得して格納する必要があるため、6789を16で除算します。余りが0〜9の場合はそのまま保存し、余りが10〜15の場合は、文字形式でA-
-
C++での10進数から2進数への変換プログラム
10進数を入力として指定すると、タスクは指定された10進数を2進数に変換することです。 コンピューターの10進数は10進数で表され、2進数は2進数の0と1の2つしかないため、2進数で表されますが、10進数は0〜9から始まる任意の数値にすることができます。 10進数を2進数に変換するには、次の手順に従います- まず、指定された数値を変換数値の基本値で除算します。例: 42を2を底とする2進数に変換し、商を取得して格納する必要があるため、42を2で除算します。余りが0の場合、ビットを0として格納します。それ以外の場合は1です。 取得した商を2進数の基数である2で除算し、ビットを格納し続けます