题目分析:
这题的题目可能有点难理解,其实就是给你k2个2,k3个3,k5个5,k6个6,让你把这些数组成256和32,但是组成的256和32的个数不能超过题目里的样例,然后要求组成的数的和最大
(可能还是不能理解,模拟一下
5个2,1个3,3个5,4个6
其中可以组成三个256
256
256
256
用掉3个2,3个5,3个6
还剩2个2,0个5,1个6,1个3
而剩下的数不够组成256,就组成32
可以组成1个32
和为256+256+256+32=800
那怎么知道可以合成多少个256、32呢?
code:
k=min(min(k2,k5),k6);
通过判断2、5、6的个数中最少的一个,来确定可以组成多少个256,32也同理
AC代码:
#include <cstdio>
#include <algorithm> //包含max和min函数的头文件
using namespace std;
int main()
{
int k2,k3,k5,k6; //分别为2、3、5、6的个数
int k;
scanf("%d%d%d%d",&k2,&k3,&k5,&k6); //输入
k=min(min(k2,k5),k6); //找可以组成多少个256
int ans=0; //ans记录答案
for(int i=1;i<=k;i++)
{
ans+=256; //加上k个256
}
int nk=min(k2-k,k3); //判断2用掉后还可以组成多少个32
for(int i=1;i<=nk;i++)
{
ans+=32; //加上nk个32
}
printf("%d\n",ans); //输出答案
return 0;
}
THE END.