题目大意
将一个数分解成若干合数的和,问最多分解成多少个。
题解
贪心用4,6,9来组合,%4=1需要一个9,%4=2需要一个6,%4=3需要一个6一个9,剩下都用4.
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
char ch=getchar();int f=0;
while(ch<'0'||ch>'9') ch=getchar();
while(ch>='0'&&ch<='9') {f=f*10+(ch^48);ch=getchar();}
return f;
}
int main()
{
int q=read();
while(q--)
{
int n=read();
if(n%4==0)
{
printf("%d\n",n/4);
}
else if(n%4==2)
{
if(n<6) printf("%d\n",-1);
else printf("%d\n",(n-6)/4+1);
}
else if(n%4==1)
{
if(n<9) printf("-1\n");
else printf("%d\n",(n-9)/4+1);
}
else
{
if(n<15) printf("-1\n");
else printf("%d\n",(n-15)/4+2);
}
}
}