将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")

京公网安备 11010502036488号