列表

详情


NC21365. 配钥匙

描述

小姐姐想要配 把钥匙,她走过开锁铺问老板价钱,老板是这么说的:



小姐姐想知道完成配n把钥匙的任务最少需要花费多少钱

输入描述

题目有多组测试数据。第一行输入一个整数T(组数少于100组),表示测试数据组数,对于接下来每组测试数据:
每组测试数据输入只有一行,分别为4个整数,表示n、m、A、B。

输出描述

对于每组测试数据:

在一行内输出一个整数,表示答案

示例1

输入:

1
5 2 2 3

输出:

8

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++14(g++5.4) 解法, 执行用时: 3ms, 内存消耗: 612K, 提交时间: 2020-03-10 16:20:52

#include<bits/stdc++.h>
using namespace std;


int main()
{
	long long n,m,a,b,t;
	cin>>t;
	while( t-- )
	{
		cin>>n>>m>>a>>b;
		long long ans=n/m*b+(n%m)*a;
		ans=min(ans,a*n);
		ans=min(ans,(n+m-1)/m*b );
		cout<<ans<<endl;
	}
}

C 解法, 执行用时: 3ms, 内存消耗: 372K, 提交时间: 2021-08-19 15:35:10

main(){
    int t,n,m,a,b,x,y,z;
    scanf("%d",&t);
    while(t--){
        scanf("%d%d%d%d",&n,&m,&a,&b);
        x=n*a;
        y=n/m*b+n%m*a;
        y=x>y?y:x;
        z=(n+m-1)/m*b;
        printf("%d\n",z>y?y:z);
    }
}

C++11(clang++ 3.9) 解法, 执行用时: 5ms, 内存消耗: 480K, 提交时间: 2018-11-27 13:34:46

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int q;
	cin>>q;
	while(q--)
	{
		int n,m,a,b;
		cin>>n>>m>>a>>b;
		cout<<min(n*a,min((n+m-1)/m*b,(n/m)*b+(n%m)*a))<<endl;
	}
}

Python3(3.5.2) 解法, 执行用时: 36ms, 内存消耗: 3448K, 提交时间: 2018-11-25 13:30:09

gg=int(input())
while gg:
    n,m,a,b=[int(x) for x in input().split()]
    if b/m>a:print(n*a)
    else:print(min(n//m*b+n%m*a,(n//m+1)*b))
    gg-=1

上一题