C语言初学者问题,零钱换整钱

2025-02-28 14:16:21
推荐回答(2个)
回答1:

好久不碰编程了,可能也说不太明白了,只能给你提供个大概思路
x是每摞硬币的厚度,单位为mm,n为10元张数,算式为:x/1.8+x/2*10+x/1.5*5=100n(我想你应该能看懂)。ps:其实不用简化,但是简化之后为16x=180n,即x=11.25n
设变量x,n,x和n都为整数(就是int类型),做for循环(就是n=1开始循环,输出x/1.8,x/1.5,x/2,10n),我用数学方法算x的最小值90,n最小值8.也就是一角50个,五角60个,一元45个,总金额为80元

回答2:

主要是公倍数,用上公倍数可以减少程序运行的时间。
#include
int main() {
int n,n1,n2,n3,k=0,x1,x2,x3,s,sum;
scanf("%d",&n);
n1=10; n2=12; n3=9;
s=0;
for(k=0;k<=100*n/(1*n1+5*n2+10*n3);k++){
sum = k*(1*n1+5*n2+10*n3);
if(100*n == sum){
x1= k*n1; x2=k*n2; x3=k*n3;
printf("%d,%d,%d\n",x1,x2,x3);
s++;
}
}
if(!s) printf("No change.\n");
}