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

C++の数値のすべての因子の奇数桁の合計の合計に関するクエリ


このプログラムでは、Qクエリが与えられ、各クエリは正の整数Nを持ちます。私たちのタスクは、C++の数値のすべての要素の奇数桁の合計の合計でクエリを解決するプログラムを作成することです。

問題の説明 −各クエリを解くには、数値Nのすべての因子を見つける必要があります。次に、桁の合計が奇数であるすべての因子を加算します。そして、各クエリの最終的な合計を返します。

問題を理解するために例を見てみましょう

入力

Q = 2, queries = {15, 8}

出力

8 1

説明

クエリ1の場合:N =15、15の因数は1、3、5、15です。

因子の奇数桁の合計は1+3 + 5 =8

クエリ2の場合:N =8、8の因数は1、2、4、8です。

因子の奇数桁の合計は1=1

ソリューションアプローチ

この問題を解決するには、すべての数値の奇数桁を合計する必要があります。そこから係数を計算し、結果に追加します。この数字の合計を処理するために、事前に計算された値を使用できます。たとえば、41の合計は、4の奇数桁と3の奇数桁の合計として求めることができます。

oddDigitSum配列を作成した後、指定された数を除算できるすべての数を見つけます。次に、theoddDigitSum配列を使用してすべての奇数桁を追加します。

ソリューションの動作を説明するプログラム

#include <iostream>
using namespace std;
#define N 99999

void calcOddDigitSum(int oddDigitSum[]) {

   for (int i = 1; i < N; i++)
   oddDigitSum[i] = oddDigitSum[i / 10] + (i & 1) * (i % 10);
}

void findFactorSum(int oddDigitSum[], int factorSum[]) {

   for (int i = 1; i < N; i++)
   for (int j = i; j < N; j += i)
   factorSum[j] += oddDigitSum[i];
}

int main(){
   int Q = 3;
   int query[] = { 5, 154, 98 };
   int oddDigitSum[N];
   int factorSum[N];
   calcOddDigitSum(oddDigitSum);
   findFactorSum(oddDigitSum, factorSum);
   for (int i = 0; i < Q; i++)
   cout<<"For query "<<(i+1)<<": The sum of odd number digit sums of all the factors of a number is "<<factorSum[query[i]]<<endl;
   return 0;
}

出力

For query 1: The sum of odd number digit sums of all the factors of a
number is 6
For query 2: The sum of odd number digit sums of all the factors of a
number is 31
For query 3: The sum of odd number digit sums of all the factors of a
number is 27

  1. C++で奇数と偶数のノードを含むすべてのレベルを出力します

    この問題では、ツリーが与えられます。そして、偶数のノードと奇数のノードを含むすべてのレベルを印刷する必要があります。 概念をよりよく理解するために例を見てみましょう 出力- Levels with odd number of nodes: 1, 3, 4 Levels with even number of nodes: 2 説明 −第1レベルには1つの要素(奇数)、第2レベルには2つの要素(偶数)、第3レベルには3つの要素(奇数)、第4レベルには1つの要素(偶数)が含まれます。 さて、この問題を解決するために。各レベルでノードの数を見つけ、それに応じて偶数-奇数レベルを出力す

  2. 数の奇数因子の合計を見つけるためのC++プログラム

    正の整数で与えられ、タスクは、数値の奇数因子を生成し、与えられた奇数因子の合計を見つけることです。 例 Input-: number = 20 Output-: sum of odd factors is: 6 Input-: number = 18 Output-: sum of odd factors is: 13 したがって、結果=1 + 5 =6 以下のプログラムで使用されるアプローチは次のとおりです − その数の奇数因子の合計を計算するための数を入力します 数字0と2は両方とも偶数であるため無視し、数字1は奇数であるため保存します ループを3から数値の平方根まで開始し