题目链接: Maximum splitting
大致题意:
给你一个数n,问你他最多能划分为几种几个合数的和
解题思路:
**最小的偶数合数是4,最小的奇数合数是9 **
四种情况:
1.n%4==0
全分成4,ans=n/4
2.n%4==1
剩下一个1要与两个4组成9
如果n/4>=2,ans=n/4-1,否则为-1
3.n%4==2
剩下一个2要与一个4组成6
如果n/4>=1,ans=n/4,否则为-1
4.n%4==3
剩下一个1和一个2,需要三个4,组成一个6和一个9
如果n/4>=3,ans=n/4-1,否则为-1
AC代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
int t; cin >> t;
while (t--) {
int n; cin >> n;
if (n % 4 == 0) {
cout << n / 4 << endl;
}
else if (n % 4 == 1) {
if (n / 4 >= 2)cout << n / 4 - 1 << endl;
else cout << -1 << endl;
}
else if (n % 4 == 2) {
if (n / 4 >= 1)cout << n / 4 << endl;
else cout << -1 << endl;
}
else if (n % 4 == 3) {
if (n / 4 >= 3)cout << n / 4 - 1 << endl;
else cout << -1 << endl;
}
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
int t; cin >> t;
while (t--) {
int n; cin >> n;
if (n == 1 || n == 2 || n == 3 || n == 5 || n == 7 || n == 11)cout << -1 << endl;
else {
int res = n / 4;
if (n & 1)cout << res - 1 << endl;
else cout << res << endl;
}
}
return 0;
}