计算C++中需要的纸币数量
给定一个人必须支付的卢比金额,比如pay_rupees和无限数量的纸币,其价值为Rupees_amount_1和Rupees_amount_2。目标是使用完全使用票据总数=distribution_total支付pay_rupees并计算所需类型Rupees_amount_1票据的数量。如果没有解决方案,则返回-1作为答案。
例如
输入
Rupees_amount_1 = 1, Rupees_amount_2 = 5, pay_Rupees = 11 distribution_total = 7输出结果
Count of number of currency notes needed are − 6
解释
6*1 + 5*1 = 11 and notes=6+1=7
输入
Rupees_amount_1 = 2, Rupees_amount_2 = 3, pay_Rupees = 10 distribution_total = 4输出结果
所需纸币数量为: 2
解释
2*2 + 3*2 = 10 and notes=2+2=4
以下程序中使用的方法如下-
设a1为金额为1卢比的纸币数量,N为纸币总数。为了支付P,我们将有方程−a1*(Rupees_amount_1)+(N−a1)*(Rupees_amount_2)=PP=a1*(Rupees_amount_1)+(N)*(Rupees_amount_2)−(a1)*(Rupees_amount_2)P−(N)*(Rupees_amount_2)=a1*(Rupees_amount_1)−(a1)*(Rupees_amount_2)a1=P−(N)*(Rupees_amount_2)/(Rupees_amount_1−Rupees_amount_2)如果a1是整数,那么只有我们将有一个解决方案否则返回-1。
将所有数字作为输入。
函数notes_needed(intRupees_amount_1,intRupees_amount_2,intpay_Rupees,intdistribution_total)接受所有输入并返回所需纸币数量的计数。
取初始计数为0。
Taketotal=pay_Rupees−(Rupees_amount_2*distribution_total)
设置total_given=Rupees_amount_1−Rupees_amount_2
设置total_given=Rupees_amount_1−Rupees_amount_2
如果total%total_given==0,则返回计数为total/total_given。
否则返回-1。
示例
#includeusing namespace std; int notes_needed(int Rupees_amount_1, int Rupees_amount_2, int pay_Rupees, int distribution_total){ int count = 0; int total = pay_Rupees − (Rupees_amount_2 * distribution_total); int total_given = Rupees_amount_1 − Rupees_amount_2; if (total % total_given == 0){ count = total / total_given; return count; } else { return −1; } } int main(){ int Rupees_amount_1 = 1; int Rupees_amount_2 = 5; int pay_Rupees = 11; int distribution_total = 7; cout<<"所需纸币数量为: "< 输出结果 如果我们运行上面的代码,它将生成以下输出-
Count the number of currency notes needed are− 6