将n/8的结果进行while遍历,循环条件是n/8是否为0,为0的话说明就是0-7之间的数,就交给后面的if语句判断是否是6的倍数。

如果不为0就让n/8的结果自减,直到能找到(n - yu * 8) % 6 == 0也就是满足是6的倍数,这个时候cnt1得到yu的赋值,退出循环。

然后进入if-else语句判断,n-yu*8是否是6的倍数,如果是的话计算出cnt2,不满足的话输出为-1

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    int cnt1 = 0;
    int yu = n / 8;
    while (yu) {
        if ((n - yu * 8) % 6 == 0) {
            cnt1 = yu;
            break;
        }
        yu--;
    }
    if ((n-yu*8)%6==0) {
        int cnt2 = (n - yu * 8) / 6;
        cout << cnt2 + cnt1;
    }
    else {
        cout << "-1";
    }
}
// 64 位输出请用 printf("%lld")