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

โปรแกรม C++ สำหรับตัวเลข K ที่ใหญ่ที่สุดหารด้วย X?


ในปัญหานี้ เราจะพยายามหาเลข K ที่ใหญ่ที่สุด ซึ่งหารด้วย X ลงตัว เมื่อต้องการทำภารกิจนี้ เราจะใช้เลข K ที่ใหญ่ที่สุดตามสูตรนี้ ((10^k) – 1) แล้วตรวจดูว่าตัวเลขหารด้วย X ลงตัวหรือไม่ ถ้าไม่ เราจะได้จำนวนที่แน่นอนโดยใช้สูตรนี้

𝑚𝑎𝑥−(𝑚𝑎𝑥 𝑚𝑜𝑑 𝑋)

ตัวอย่างหนึ่งเหมือนกับตัวเลข 5 หลัก ที่หารด้วย 29 ลงตัว ดังนั้นจำนวน 5 หลักที่ใหญ่ที่สุดคือ 99999 ซึ่งหารด้วย 29 นี้ไม่ลงตัว เราจะได้สูตรนี้มา -

99999−(99999 𝑚𝑜𝑑 29)=99999−7=99992

ตัวเลข 99992 หารด้วย 29 ลงตัว

อัลกอริทึม

maxKDigit(k, x)

begin
   max = (10^k) - 1
   if max is divisible by x, return max
   otherwise return max – (max mod x)
end

ตัวอย่าง

#include<iostream>
#include<cmath>
using namespace std;
long max_k_digit(int k, int x){
   //get the maximum number of k digits
   int max = pow(10, k) - 1;
   if(max % x == 0){
      return max;
   }
   return (max) - (max % x);
}
main() {
   int k, x;
   cout << "Enter Digit Count(K) and Divisor(N): ";
   cin >> k >> x;
   cout << "Result is: " << max_k_digit(k, x);
}

ผลลัพธ์

Enter Digit Count(K) and Divisor(N): 5 29
Result is: 99992


ผลลัพธ์

Enter Digit Count(K) and Divisor(N): 6 87
Result is: 999978