Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาผลรวมหลักขั้นต่ำที่เป็นไปได้หลังจากเพิ่มตัวเลข d ใน C++


ในปัญหานี้ เราได้รับตัวเลขสองตัว n และ d หน้าที่ของเราคือค้นหาผลรวมของหลักขั้นต่ำที่เป็นไปได้หลังจากเพิ่มตัวเลข d

คำอธิบายปัญหา − เราจำเป็นต้องย่อผลรวมของตัวเลขโดยการเพิ่มตัวคูณ kth ของ d ถึง n

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

อินพุต

n = 5230, d = 54

ผลลัพธ์

1

คำอธิบาย

The number will be 5230 + (2*54) = 5338

แนวทางการแก้ปัญหา

วิธีง่ายๆ ในการแก้ปัญหาคือการตรวจสอบผลคูณของ d ทั้งหมดตั้งแต่ 1 ถึง 8 เนื่องจากในลำดับที่ 9 ผลรวมของหลักจะทำซ้ำ ขึ้นอยู่กับโมดูโล 9 ซึ่งจะส่งคืนผลรวมหลัก ดังนั้น a+d*(9k+l) โมดูโล 9 จึงเทียบเท่ากับโมดูโล a+d*l 9 ดังนั้น เราจะตรวจสอบการทวีคูณของ l*d ทั้งหมดตั้งแต่ 1 ถึง 8 และคืนค่าต่ำสุดที่พบ

ความก้าวหน้าอย่างหนึ่งในโปรแกรมสามารถทำได้โดยใช้ข้อเท็จจริงที่ว่าผลรวมหลักจะไม่น้อยกว่า 1 ดังนั้นหากเรามีผลรวมหลัก =1 เราจะคืนให้

โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา

ตัวอย่าง

#include <iostream>
using namespace std;
int calcDigitSum(int n) {
   int i = n % 9;
   if (i == 0)
      return 9;
   else
      return i;
}
int findMinDigitSum(int n, int d) {
   int minSum = 10;
   int number;
   for (int i = 1; i < 9; i++) {
      number = (n + i * d);
      minSum = min(minSum, calcDigitSum(number));
      if(minSum == 1)
         return minSum;
   }
   return minSum;
}
int main() {
   int n = 5230, d = 54;
   cout<<"The minimum possible digitsum after adding the number is "<<findMinDigitSum(n, d);
   return 0;
}

ผลลัพธ์

The minimum possible digitsum after adding the number is 1