令邊長1,2,3,4數量分別為a,b,c,d
邊長為4的會立刻裝滿,所以先加d
邊長為3裝一個後只能裝邊長為一的,總和加上c
同時,能裝下37*c個邊長一,a-37*c
邊長2一次能裝8個,總和加8*b
剩下放邊長1,a-8*(b%8)
最後放1,加a/64
C++ code
#include <bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int a, b, c, d;
while (cin >> a >> b >> c >> d) {
int sum = 0;
sum += d;
sum += c;
a -= 37 * c;
sum += ceil(b / 8.0);
a -= 8 * (b % 8);
if (a > 0) {
sum += ceil(a / 64.0);
}
cout << sum<<'\n';
}
}