牛客网暑期ACM多校训练营(第八场)

传送

战况:

G题oeis签到,,  用圆周分割那个公式也可以过,只不过开始直接除24了 ,没求逆元

B题最后怎么交都不对,,后来发现mod还是1e9 +7  没改过来  ε=ε=ε=┏(゜ロ゜;)┛

B也是oeis

G:

python中 

// 取整除 - 返回商的整数部分(向下取整

这样就可以不用求逆元了

n = eval(input())

ans = (24 - 42*n + 23*n*n - 6*n*n*n + n*n*n*n)//24

ans = ans % 1000000007

print("{:.0f}".format(ans))

B:

oeis

扫描二维码关注公众号,回复: 2761520 查看本文章

施罗德数 但是不好实现,用超级科特兰数实现,

#include<stdio.h>
#define LL long long
#define mod 998244353
LL inv[1000005] = {1,1}, f[1000005] = {1,1};
int main(void)
{
    int n, i;
    scanf("%d", &n);
    if(n == 1)
        printf("1\n");
    else
    {
        n ++;
        for(i=2;i<=n;i++)
        inv[i] = (mod-mod/i)*inv[mod%i]%mod;
    for(i=2;i<=n;i++)
        f[i] = ((6*i-3)*f[i-1]%mod-(i-2)*f[i-2]%mod+mod)%mod*inv[i+1]%mod;
        printf("%lld\n", f[n-2] * 2 % mod);
    }
}

E题签到。。。

没人做哈哈哈哈

#include<bits/stdc++.h>
using namespace std;
int T,n,m,k,f;
 
int main()
{
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d%d",&n,&m,&k);
        f=1;
        for(int i=0;i<k;++i)
        {
            int a,b,c,d;
            scanf("%d%d%d%d",&a,&b,&c,&d);
            if((a!=c||b!=d)&&(a+b)%2==0&&(c+d)%2==0)  f=0;
        }
        if(n%2==0||m%2==0)  f=0;
        printf("%d\n",n*m+f);
    }
}

猜你喜欢

转载自blog.csdn.net/Soul_97/article/details/81604253