আমার পকেটে 15 ডলার আছে তেমনি, আমি এমন একটি দোকানে আছি যা পরিবর্তন দেয় না। ব্রাউজ করার সময়, আমি একটি আইটেম দেখি যার দাম $ 10 (ট্যাক্স অন্তর্ভুক্ত)। আমি কি কোনও অর্থ না হারিয়ে সেই জিনিসটি কিনতে পারি?
এই ক্ষেত্রে, উত্তর হ্যাঁ। আমার $ 15 কে কীভাবে বিভক্ত করা হবে (এক 10 এবং এক 5, বা তিন 5s বা অন্য কিছু), আমার সর্বদা সঠিক 10 ডলার প্রয়োজন।
দ্বিতীয় উদাহরণ হিসাবে, আমার পকেটে $ 0.16 রয়েছে। আমি অন্য কোন পরিমাণ অর্থের সঠিক মূল্য দিতে সক্ষম হব?
Possible Divisions:
0.01, 0.05, 0.10
0.01, 0.05 x 3
0.01 x 16
Guaranteed Exact Change:
0.01, 0.05, 0.06, 0.10, 0.11, 0.15, 0.16
আমার পকেটে যদি $ 0.27 থাকে?
Possible Divisions:
0.01 x 2, 0.25
0.01 x 2, 0.05, 0.10 x 2
0.01 x 2, 0.05 x 3, 0.10
0.01 x 2, 0.05 x 5
0.01 x 27
Guaranteed Exact Change:
0.01, 0.02, 0.25, 0.26, 0.27
উপরের ক্ষেত্রে, কেবলমাত্র কয়েকটি পরিমাণ অর্থ ছিল যার জন্য আমার সর্বদা নিখুঁত পরিবর্তন হবে।
তোমার কাজ
সংক্ষিপ্ততম প্রোগ্রাম (বা নামকৃত ফাংশন) লিখুন যা ক) একটি পূর্ণসংখ্যক অর্থ এবং খ) ইনপুট হিসাবে সম্ভাব্য সংখ্যার তালিকা করে এবং যে পরিমাণ অর্থের জন্য আমার নিখুঁত পরিবর্তন করতে হবে তার একটি তালিকা বের করে দেয়। ইনপুটটি হয় STDIN বা প্রোগ্রাম বা ফাংশনের পক্ষে যুক্তি হতে পারে। আমি ইনপুট ফর্ম্যাটিংয়ের উপর কঠোর হতে যাচ্ছি না; এটি কীভাবে আপনার ভাষার বিন্যাসগুলি অ্যারে করে তা মিলতে পারে।
সম্ভবত আরও বিস্তারিত ব্যাখ্যা
আমার পকেটে একটি নির্দিষ্ট পরিমাণ অর্থ রয়েছে, যা মুদ্রার সম্ভাব্য বিক্ষোভের সেট থেকে তৈরি। যদি আমার কাছে 8 ডলার থাকে এবং আমি জানি যে সম্ভাব্য সংজ্ঞাগুলি 2 ডলার এবং 3 ডলার, তবে কেবলমাত্র আমার পকেটে থাকা বিলের অনেকগুলি সংমিশ্রণ রয়েছে। এগুলি 2+2+2+2এবং 3+3+2। সঠিক পরিমাণ অর্থ উত্পাদন করতে সক্ষম হতে, আমার পকেটে থাকা কেবলমাত্র বিলগুলি ব্যবহার করে আমাকে সেই পরিমাণটি উত্পাদন করতে সক্ষম হতে হবে। আমার চারটি 2s থাকলে আমি উত্পাদন করতে পারি 2, 4, 6, or 8। আমার যদি দুটি 3s এবং 2 থাকে তবে আমি উত্পন্ন করতে 2, 3, 5, 6, or 8পারি যেহেতু আমার পকেটে এই সংমিশ্রণের মধ্যে কোনটি আসলে আমি জানি না, আমার চূড়ান্ত উত্তরটি হ্রাস পেয়েছে 2, 6, 8। এই মোট মান এবং আমি জানি যে আমি আমার পকেট থেকে উত্পাদন করতে পারি, মোট পরিমাণ এবং সম্ভাব্য সংখ্যার দিক দিয়ে।
হাতে গণনা উদাহরণ I / O
7 [3, 4]
3, 4, 7 //only one possible division into 3 + 4
7 [3, 2]
2, 3, 4, 5, 7 //the only division is 3 + 2 + 2
6 [2, 3, 4]
6 //divisions are 2+2+2, 3+3, 2+4
16 [1, 5, 10, 25] //this represents one of the examples above
1, 5, 6, 10, 11, 15, 16
27 [1, 5, 10, 25] //another example from above
1, 2, 25, 26, 27
1500 [1, 5, 10, 25, 100, 500, 1000, 2000]
500, 1000, 1500
600 [100, 500, 1000, 2000]
100, 500, 600
600 [200, 1, 5, 10, 25, 100, 500, 1000, 2000]
600
6 [2, 3, 4]। 2+2+23, এবং 3+32 এবং 4 তৈরি করতে পারবেন না ?