https://www.acwing.com/problem/content/5184/
问题可以转换为:
∀ x , y ∈ N + , 4 x + 5 y = N \forall x, y\in N^+, 4x + 5y = N ∀x,y∈N+,4x+5y=N
求 ( x , y ) (x, y) (x,y)二元组解的个数。
可以发现, x 0 = − N , y 0 = N x_0 = -N, y_0 = N x0=−N,y0=N是原方程的一组解,则通解为:
x = x 0 + 5 k , y = y 0 − 4 k , k ∈ N + x = x_0 + 5k, y = y_0 - 4k, k \in N^+ x=x0+5k,y=y0−4k,k∈N+
根据 x , y x, y x,y均为正整数,求解k的范围:
x 0 + 5 k > = 0 , k > = N / 5 x_0 + 5k >= 0, k >= N / 5 x0+5k>=0,k>=N/5
y 0 − 4 k > = 0 , k < = N / 4 y_0 - 4k >= 0, k <= N / 4 y0−4k>=0,k<=N/4
又由于k为正整数,所以k的取值范围为: [ ⌈ N / 5 ⌉ , ⌊ N / 4 ⌋ ] [\lceil N / 5 \rceil, \lfloor N / 4 \rfloor] [⌈N/5⌉,⌊N/4⌋]。
所以方案数为 ⌊ N / 4 ⌋ − ⌈ N / 5 ⌉ + 1 \lfloor N / 4 \rfloor - \lceil N / 5 \rceil + 1 ⌊N/4⌋−⌈N/5⌉+1。
#include
using namespace std;
const int N = 1000010;
int main() {
int n;
cin >> n;
cout << n / 4 - (n + 4) / 5 + 1 << endl;
return 0;
}