题意简述
给出一个整数 。
问有多少种情况,使 能被拆分成若干个 和若干个 相加。
解题思路
我们设能被拆分成 个 和 个 。
这样可以列出方程:
但显然枚举 和 的值会超时。
所以拿出我们初一的数学知识:整数解问题。
我们用含 的代数式表示 (当然用含 的代数式表示 也可以),有以下方程。
之后枚举 的值即可。
这里要注意, 的值可能为 ,所以我们要从 开始枚举。
代码实现
#include<bits/stdc++.h>
using namespace std;
int n,ans=0;
int main() {
scanf("%d",&n);
for(int i=0;i<=n;i++) {
if((n-5*i)<0) break;
if((n-5*i)%4==0) ans++;
}
printf("%d",ans);
return 0;
}
//code by TheCedar