战况:
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
施罗德数 但是不好实现,用超级科特兰数实现,
#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);
}
}