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