আমাদের একটি সংখ্যা d দেওয়া হয়েছে যা সংখ্যার সংখ্যাকে প্রতিনিধিত্ব করে। লক্ষ্য হল একটি সংখ্যা হিসাবে 0 সহ ধনাত্মক পূর্ণসংখ্যার গণনা খুঁজে বের করা এবং সর্বাধিক d সংখ্যা রয়েছে। 1 ডিজিট, 2 ডিজিট, 3 ডিজিট ....d ডিজিট ইতিবাচক সংখ্যা যেখানে অন্তত একটি 0 আছে সবগুলি গণনা করুন।
আমরা প্রথমে সংখ্যার সংখ্যা খুঁজে পাব যে সংখ্যার সংখ্যা কমপক্ষে একটি 0 সহ d সংখ্যা রয়েছে। ধরা যাক d=3। কমপক্ষে একটি 0 সহ একটি 3-সংখ্যার সংখ্যা তৈরি করতে, সম্ভাব্য উপায়গুলি হল −
Here d1 can have 1 to 9 : 9 ways d2 can have 0-9 : 10 ways d3 can have 0-9 : 10 ways Total numbers possible: 9 x 10 x 10 = 9 x 102 For d digits, count of numbers: 9 x 10d-1 For d digits, numbers without any 0 are : 9d Total numbers having d digits with at least one 0 = 9 x 10d-1 - 9d = 9 x ( 10d-1 - 9d-1 )
আসুন উদাহরণ দিয়ে বুঝতে পারি
ইনপুট − d=4
আউটপুট − একটি সংখ্যা হিসাবে 0 সহ ধনাত্মক পূর্ণসংখ্যার গণনা এবং সর্বাধিক 'd' সংখ্যা হল − 2619
ব্যাখ্যা − x সংখ্যার সংখ্যা কমপক্ষে একটি 0 −
সহ1 digit numbers : 0 2 digit numbers : 9 3 digit numbers : 171 4 digit numbers: 2439 Total= 9+171+2439 = 2619
ইনপুট − d=1
আউটপুট − একটি সংখ্যা হিসাবে 0 সহ ধনাত্মক পূর্ণসংখ্যার গণনা এবং সর্বাধিক 'd' সংখ্যা হল − 0
ব্যাখ্যা − 1 থেকে 9 কোন সংখ্যার একটি সংখ্যা হিসাবে 0 নেই৷
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ
আমরা দুটি পন্থা ব্যবহার করব। একটি লুপের জন্য একটি ব্যবহার করে একটি প্রথম নিরীহ পদ্ধতি। 1 ডিজিট থেকে ডি ডিজিট পর্যন্ত যাত্রা শুরু করুন এবং উপরে উল্লিখিত সূত্রটি ব্যবহার করে সংখ্যা গণনা করুন। গণনার জন্য ফেরত মান যোগ করুন।
-
ডিজিটের জন্য পূর্ণসংখ্যা d নিন।
-
ফাংশন total_count(int d)) d সংখ্যার সংখ্যা নেয় এবং d সংখ্যার অন্তত একটি 0 সহ সংখ্যার গণনা প্রদান করে।
-
temp=9*(pow(10,d-1) - pow(9,d-1));
-
রিটার্ন টেম্প।
-
ফাংশন Max_d(int d) সর্বাধিক সংখ্যা d নেয় এবং কমপক্ষে একটি 0 বিশিষ্ট d সংখ্যা পর্যন্ত সংখ্যার গণনা প্রদান করে।
-
1 সংখ্যার সংখ্যা থেকে শুরু করে তারপর 2 এবং d পর্যন্ত একটি লুপ ব্যবহার করে অতিক্রম করুন৷
-
প্রতিটি d-এর জন্য মোট_গণনা (i) হিসাবে সংখ্যা গণনা করুন। গণনা করতে এটি যোগ করুন।
-
শেষ পর্যন্ত আমরা মোট গণনা পাব।
-
ফলাফল হিসাবে রিটার্ন গণনা।
দক্ষ পদ্ধতি
এই পদ্ধতিতে, আমরা উপরের গণনার জন্য গঠিত G.P পর্যবেক্ষণ করে গণনা গণনা করব।
Solution is 9 x (10d-1 - 9d-1) = 9 x (10d - 1)- 9 x (9d-1) = 9 x (10i - 1) - 9 x (9i - 1) ( 1<=i<=d ) = g.p 1 - g.p 2 = 9x(10d-1)/(10-1) - 9x(9d-1)/(9-1) = (10d-1)- (9/8)*(9d-1)
-
সর্বাধিক সংখ্যা হিসাবে d নিন।
-
ফাংশন Max_d(int d) সর্বাধিক সংখ্যা d নেয় এবং কমপক্ষে একটি 0 বিশিষ্ট d সংখ্যা পর্যন্ত সংখ্যার গণনা প্রদান করে।
-
উপরের সূত্র ব্যবহার করে temp_1 কে 9*((pow(10,d)-1)/9 হিসাবে গণনা করুন।
-
temp_2 কে 9*((pow(9,d)-1)/8 হিসাবে গণনা করুন।
-
সেট গণনা =temp_1 - temp_2।
-
ফলাফল হিসাবে রিটার্ন গণনা।
উদাহরণ (নিষ্পাপ পদ্ধতি)
#include<bits/stdc++.h> using namespace std; int total_count(int d){ int temp = 9*(pow(10,d-1) - pow(9,d-1)); return temp; } int maximum_d(int d){ int count = 0; for (int i=1; i<=d; i++){ count = count + total_count(i); } return count; } int main(){ int d = 5; cout<<"Count of positive integers with 0 as a digit and maximum 'd' digits are: "<<maximum_d(d) << endl; return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেCount of positive integers with 0 as a digit and maximum 'd' digits are: 33570
উদাহরণ (দক্ষ পদ্ধতি)
#include<bits/stdc++.h> using namespace std; int maximum_d(int d){ int temp_1 = 9*((pow(10,d)-1)/9); int temp_2 = 9*((pow(9,d)-1)/8); int count = temp_1 - temp_2; return count; } int main(){ int d = 4; cout<<"Count of positive integers with 0 as a digit and maximum 'd' digits are: "<<maximum_d(d) << endl; return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেCount of positive integers with 0 as a digit and maximum 'd' digits are: 2619