POJ 1017: Packets
题目描述
输入
输出
样例输入
样例输出
分析:贪。。贪心。。。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include <iostream> #include <string> #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> #include <vector> #include <queue> #include <deque> #include <map> #define range(i,a,b) for(int i=a;i<=b;++i) #define LL long long #define rerange(i,a,b) for(int i=a;i>=b;--i) #define fill(arr,tmp) memset(arr,tmp,sizeof(arr)) using namespace std; int num[]={0,5,3,1},pro[6]; void init(){ } void solve(){ while(true){ bool flag=false; range(i,0,5){ cin>>pro[i]; if(pro[i]>0)flag=true; } if(!flag)break; int pack=pro[5]+pro[4]+pro[3]+(pro[2]+3)/4; int twos=pro[3]*5+num[pro[2]%4]; if(pro[1]>twos)pack+=(pro[1]-twos+8)/9; int ones=36*pack-36*pro[5]-25*pro[4]-16*pro[3]-9*pro[2]-4*pro[1]; if(pro[0]>ones)pack+=(pro[0]-ones+35)/36; cout<<pack<<endl; } } int main() { init(); solve(); return 0; }