困惑了好久,还以为用dp,其实就是一道简单的思路题,如果通过观察发现,除了1 2 3 5 7 11不能被分解外,其它任何数,如果是偶数可以被分分解为4 或 6,如果是奇数可以分解为4或6或9。
通过计算发现,如果是偶数,那么最大的个数就是n/4,如果是奇数,因为多了一个9减去1即可。具体的数学原理,我也不太清楚,持续探索中。
实现如下(题目附后)
#include <stdio.h>
int main()
{
int t,x;
scanf("%d",&t);
while(t--)
{
scanf("%d",&x);
if(x<=3||x==5||x==7||x==11) printf("-1\n");
else printf("%d\n", x/4-x%2);
}
return 0;
}