萌新求助,为什么本机AC洛谷上CE捏
查看原帖
萌新求助,为什么本机AC洛谷上CE捏
743048
ran_qwq楼主2023/2/5 15:23
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e7+10,INF=0x3f3f3f3f,Mod=1e9+7;
int read()
{
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9')
	{
		if(ch=='-')
			f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9')
		x=x*10+ch-'0',ch=getchar();
	return x*f;
}
void Write(int x)
{
	if(x<0)
	{
		putchar('-'),Write(-x);
		return;
	}
	if(x<10)
	{
		putchar(x+'0');
		return;
	}
	Write(x/10),putchar(x%10+'0');
}
void write(int x,char *s)
{
	Write(x),printf("%s",s);
}
int fac[N]={1},inv[N];
int power(int a,int b)
{
	int ans=1;
	while(b)
	{
		if(b&1)
			ans=ans*a%Mod;
		b>>=1,a=a*a%Mod;
	}
	return ans;
}
void init()
{
	int n=2e7;
	for(int i=1;i<=n;i++)
		fac[i]=fac[i-1]*i%Mod;
	inv[n]=power(fac[n],Mod-2);
	for(int i=n-1;~i;i--)
		inv[i]=inv[i+1]*(i+1)%Mod;
}
int C(int n,int m)
{
	if(n<m||m<0)
		return 0;
	return fac[n]*inv[m]%Mod*inv[n-m]%Mod;
}
void solve()
{
	int n=read(),k=read();
	if(n==1)
	{
		write(k,"\n");
		return;
	}
	int p=k+1>>1;
	write((k*C(n+p-2,n-1)%Mod-2*(n-1)%Mod*C(n+p-2,n)%Mod+Mod)%Mod,"\n");
}
signed main()
{
	init();
	int T=read();
	while(T--)
		solve();
}


2023/2/5 15:23
加载中...