题解

· · 题解

题目:P8395。

思路:我们先让数列中所有数都变成 4 。此时,只有 n4 的倍数时可以满足可以实现,不妨设此时 n = 4 \times m

那么如果 n \bmod 4 = k ,那么就可以把 k4 变成 5 ,就可以满足有方法。

那么如果 m < k ,就不可以实现了,其他情况都可以有实现方法。

再说有多少种方法。因为 45 的最小公倍数是 20 ,那么可以将 54 换成 45 ,就多出一组

所以多出的组数是 4 的最多个数整除 5

因为 4 最多的个数应该是 m-k ,所以多出来是组数是 m-k 除以 5 的整数部分。

那么在可以实现时,可实现组数就是 m-k 除以 5 的整数部分加 1

代码如下。

#include<bits/stdc++.h>//万能头。 
using namespace std;//标准命名空间。
int main()
{
    int n;//n如题目所述。 
    cin>>n;
    if(n/4<n%4)//判断是否有解。 
    {
        cout<<0;
        return 0;//终止程序。 
    }
    cout<<(n/4-n%4)/5+1;//输出组数。 
    return 0;//好习惯! 
}

都看到这里了,不妨点个赞再走吧,但是千万不要抄袭!!!