代码:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int n;
scanf("%d",&n);
if (n%2!=0||n==10||n<6)
{
printf("-1");
}
else
{
if (n % 8 == 0)
{
printf("%d",n/8);
}
else
{
printf("%d",n/8+1);
}
}
return 0;
}
思路:
-
因为必定为偶数,排除奇数
-
因为至少为6,排除小于6的
-
根据观察,10也不行
-
剩下有两种情况:
1.可以被8整除,所以代数为n/8
2.被8除完之后, 剩下2或4或6, 只需要从前面的一个或者两个8里面拿出一个或者两个2, 把2或4填充为6, 总数即n/8+1个