这一天,阳光明媚,风和日丽,小马想去买一堆冰淇淋带回家,老板和他说,我们家的冰淇淋最近正在做活动,A元一个,B元m个
小马想至少买n个冰淇淋,但是又想花最少的钱,你能帮助他写个程序算出他最少要花多少钱呢
输入格式
第一行是T表示有T组数据
接下来t行,每一行分别是n,m,A,B
输出格式
你要对每次结果算出买n个冰淇淋最少要花多少钱
输入样例 复制
2
5 2 2 3
6 2 2 3
输出样例 复制
8
9
数据范围与提示
T<=100
0≤A,B≤1000000,0≤n,m≤1000
对于5 2 2 3 意思是要买5个冰淇淋 A类型冰淇淋2元一个 B类型冰淇淋是3元2个 那么买五个最合适的方式是先买2种B类型 再买1种A类型
6 2 2 3 意思是要买6个冰淇淋 A类型冰淇淋2元一个 B类型冰淇淋是3元2个 那么买6个最合适的方式是先买3种B类型
用这个公式计算
sum = n / m * b + n % m * a
你题目的解答代码如下:
#include<stdio.h>
int main()
{
int i,t,n,m,a,b,sum;
scanf("%d", &t);
for(i=0;i<t;i++){
scanf("%d%d%d%d", &n,&m,&a,&b);
sum = n / m * b + n % m * a;
printf("%d\n",sum);
}
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
#define MAX_T 100
#include<stdio.h>
int main()
{
int arr[MAX_T][4] = { 0 }; int i = 0; int sum = 0;
int T = 0;
do
{
scanf("%d", &T);
} while (T > MAX_T||T<=0);
again:
for (i = 0; i < T; i++)
{
int j = 0;
for (j = 0; j < 4; j++)
{
scanf("%d", &arr[i][j]);
if (arr[i][j] < 0 || arr[i][0]>1000000 || arr[i][1]>1000000 || arr[i][2]>1000 || arr[i][3] > 1000 || arr[i][0] < arr[i][1])
goto again;
}
}
for (i = 0; i < T; i++)
{
sum =( arr[i][0] / arr[i][1] * arr[i][3] )+ (arr[i][0] % arr[i][1] * arr[i][2]);
printf("%d\n", sum);
}
return 0;
}
希望对你有用,感谢你的采纳
#include<stdio.h>
#include <stdlib.h>
int main()
{
int i,t,n,m,a,b,sum,*op;
scanf("%d", &t);
if (t <= 0)
{
return -1;
}
op = (int *)malloc(sizeof(int) * t);
for(i=0;i<t;i++){
scanf("%d%d%d%d", &n,&m,&a,&b);
sum = n / m * b + n % m * a;
op[i] = sum;
}
for(i=0;i<t;i++){
printf("%d\n",op[i]);
}
free(op);
return 0;
}
运行结果