标签:装麻饼 盒子 min OH 麻饼 ans else MY 合肥
这又是一道坑神的题
题目:
合肥生产的麻饼、烘糕、寸金、白切统称为合肥四大名点,历史悠久,风味独特,是合肥四大传统特产,历来被人们用作待客和馈赠的礼品。
当然摩尔庄园的麻饼不但精致,还比较大,为了减少浪费,麻饼从工厂里生产出来的时候,是一小块扇形的固体,一共有4种规格,编号为1~4,分别是圆心角为72º,144º,216º,288º的扇形,4种规格的半径都一样。麻饼的盒子是圆形的,半径和麻饼的半径一致。也就是说,如果将一块1号麻饼和一块4号麻饼可以恰好装入一个盒子,一块2号麻饼和一块3号麻饼可以恰好装入一个盒子。现在已知的4种规格麻饼的数量,你的任务是写一个程序,帮助可可计算最多可以装满多少个盒子。
这道题开始,我就只考虑了1-4,2-3的情况,然后就交了。错了,我当时就很纳闷,。。。。。。。。。。。。。。
肯定还有其他情况!
一小时后…
我发现了一共有6种组合。
但是怎样确定先后顺序呢?
【一脸懵逼】
后来,思路:
因为大的不好分,就尽量多的去消耗大的,剩下的零零散散的小的就很容易拼,就像什么那个5a,就可用剩下的零零散散的a来拼。
嗲马 代码如下:
#include <bits/stdc++.h>
using namespace std;
int main(){
long a,b,c,d,ans=0,x;
cin>>a>>b>>c>>d;
if(a<d){
x=a;
}
else{
x=d;
}
ans+=x;
a-=x;
d-=x;
if(b<c){
x=b;
}
else{
x=c;
}
ans+=x;
b-=x;
c-=x;
if(a/2<c){
x=a/2;
}
else{
x=c;
}
ans+=x;
a-=x*2;
c-=x;
if(a<b/2){
x=a;
}
else{
x=b/2;
}
ans+=x;
a-=x;
b-=2*x;
if(a/3<b){
x=a/3;
}
else{
x=b;
}
ans+=x;
a-=x*3;
b-=x;
ans+=a/5;
cout<<ans;
}
这用min也可以:
#include <bits/stdc++.h>
using namespace std;
int main(){
long a,b,c,d,ans=0,x;
cin>>a>>b>>c>>d;
x=min(a,d);
ans+=x;
a-=x;
d-=x;
x=min(b,c);
ans+=x;
b-=x;
c-=x;
x=min(c,a/2);
ans+=x;
a-=x*2;
c-=x;
x=min(a,b/2);
ans+=x;
a-=x;
b-=2*x;
x=min(a/3,b);
ans+=x;
a-=x*3;
b-=x;
ans+=a/5;
cout<<ans;
}
goodbye!!!
标签:装麻饼,盒子,min,OH,麻饼,ans,else,MY,合肥 来源: https://blog.csdn.net/m0_60519493/article/details/122383615
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。