#include <iostream>
using namespace std;

int main() {
    int total;
    while (cin >> total) { // 注意 while 处理多个 case
        int a = total;
        int i = a/7;
        a = a-i*7;
        if(a==3&&total>3) {i-=1;a=10;}
        if(a==4&&total>4) {i-=1;a=11;}
        int j = a/5;
        a = a-j*5;
        int k = a;
        cout<<i+j+k<<endl;
    }
}
// 64 位输出请用 printf("%lld")

仅针对这题,我个人拿到题目后首先的解题思路是贪心,有大额先换大额。从代码中也可以看出,我其实就是先换大的,剩下的再换小的。但除完每个数的余数要考虑一下,加上自己之后能否由小的面额再凑出来更少的数量。这题需要考虑的不多,最后找出来就是7余下的3和4,用1面额换太多了,加上7却可以使用5面额来代替。