题解 CF870C 【Maximum splitting】
好久没A绿题了,纪念一下,发个题解
众所周知,最小合数为4,拆解n只需要用x个4就好了
但如果n % 4 != 0怎么办,自己去分析,这里只说一下结论
n % 4 == 0 || n % 4 == 2
那答案就是n / 4,n % 4 == 2可以将最后的4和2合并,6是个合数
n % 4 == 1 || n % 4 == 3
答案:
n / 4 - 1
代码:
#include <iostream>
using namespace std;
int main()
{
int t;
cin >> t;
for(int i = 1; i <= t; i++)
{
int n;
cin >> n;
if(n == 1 || n == 2 || n == 3 || n == 5 || n == 7 || n == 11)
{
cout << "-1\r";
}
else
{
if(n % 4 == 0 || n % 4 == 2)
{
cout << n / 4 << endl;
continue;
}
else if(n % 4 == 1 || n % 4 == 3)
{
cout << n / 4 - 1 << endl;
}
}
}
return 0;
}

浙公网安备 33010602011771号