P1909 买铅笔(C语言)

P1909 买铅笔

在这里插入图片描述
在这里插入图片描述

1.40分思路

可以用一个二维数组将价格和铅笔的数量存入,然后用while判断,寻找最大的数量
最后用for循环,将最小的价格寻找出来并输出。

2.源码

#include<stdio.h>
int main(){
    int n;
    scanf("%d",&n);  //需要的
    int a[3][2];
    for(int i=0;i<3;i++)
        scanf("%d %d",&a[i][0],&a[i][1]);
    for(int i=0;i<3;i++){
        int j=1;
        while(n>a[i][0]){
            j++;
            a[i][0]+=a[i][0];
            
        }
        a[i][1]=a[i][1]*j;
                }
   	int min = 100000000000; 
	for (int i = 0; i < 3; i++) { 
		if (a[i][1] < min) { 
			min = a[i][1]; 
		}
	}
	printf("%d",min);
}

3.AC思路

将输入的所需要的的铅笔数除每个包装能放的铅笔数,求出所要的包装数。
然后根据包装数求出价格。
最后比较大小输出最小的价格。

#include <stdio.h>
int main()
{
   int n,a1,a2,b1,b2,c1,c2,a,b,c,z;
   int count;
   scanf("%d",&n);//n是需要的数量
   scanf("%d %d",&a1,&a2);//a1是数量,a2是价格
   scanf("%d %d",&b1,&b2);
   scanf("%d %d",&c1,&c2);
   a=n/a1;
   count=n%a1==0?a:a+1;
   a=count*a2;//第一和第二表达式求至少需要买的铅笔包数,第三给表达式表示总共需要的价格
   
   b=n/b1;
   count=n%b1==0?b:b+1;
   b=count*b2;//同上
   c=n/c1;
   count=n%c1==0?c:c+1;
   c=count*c2;//同上
   if(a<b&&a<c)z=a;//取最省钱的方案,赋值给z
   if(b<a&&b<c)z=b;
   if(c<b&&c<a)z=c;
   printf("%d\n",z);
   return 0;
}
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页