এই সমস্যায় আমরা সবচেয়ে বড় K-অঙ্কের সংখ্যা খুঁজে বের করার চেষ্টা করব যা X দ্বারা বিভাজ্য। এই কাজ করতে আমরা ((10^k) - 1) ফর্মুলা দিয়ে সবচেয়ে বড় K-অঙ্কের সংখ্যা নিব। তারপর চেক করব সংখ্যাটি X দ্বারা বিভাজ্য কিনা, যদি না হয়, তবে নিচের ফর্মুলা দিয়ে সঠিক সংখ্যা বের করব।
max - (max mod X)
একটি উদাহরণ: ৫-অঙ্কের সংখ্যা যা ২৯ দ্বারা বিভাজ্য। সবচেয়ে বড় ৫-অঙ্কের সংখ্যা 99999। এটি ২৯ দ্বারা বিভাজ্য নয়। এখন ফর্মুলা প্রয়োগ করলে পাব:
99999 - (99999 mod 29) = 99999 - 7 = 99992
সংখ্যা 99992, ২৯ দ্বারা বিভাজ্য।
অ্যালগরিদম
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){
// k-অঙ্কের সর্বোচ্চ সংখ্যা পান
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