结束了,一切都结束了
  • 板块灌水区
  • 楼主_Int_
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/11/20 14:16
  • 上次更新2023/11/4 00:01:46
查看原帖
结束了,一切都结束了
68703
_Int_楼主2021/11/20 14:16

只保佑T1 T2不炸吧

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
inline void in(int &x){
	x=0;int f=1;char c=getchar();
	while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();
	while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+c-'0',c=getchar();
	x*=f;
}
const int X=10000000;
bool isp[X+520];
int t,x,xt[X+520];
int main(){
	freopen("number.in","r",stdin);
	freopen("number.out","w",stdout);
	for(int i=1;i<=X+233;i++){
		if(isp[i])continue;
		int n=i;
		bool flag=0;
		while(n&&!flag){
			flag|=(n%10==7);
			n/=10;
		}
		if(flag)
			for(int j=i;j<=X+233;j+=i)
				isp[j]=1;
	}
	for(int i=X+233;i>=1;i--)
		xt[i]=isp[i]?xt[i+1]:i;
	in(t);
	while(t--){
		in(x);
		if(isp[x])
			puts("-1");
		else
			printf("%d\n",xt[x+1]);
	}
	return 0;
}
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
inline void in(int &x){
	x=0;int f=1;char c=getchar();
	while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();
	while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+c-'0',c=getchar();
	x*=f;
}
const int Mod=998244353;
int n,m,k,v[118];
ll f[118][35][35][35],a[35][35];
ll ksm(ll x,ll p){
	ll ret=1;
	while(p){
		if(p&1)ret=(ret*x)%Mod;
		x=(x*x)%Mod;
		p>>=1;
	}
	return ret;
}
ll fac[35],invfac[35];
ll C(int n,int m){
	return ((fac[m]*invfac[n])%Mod*invfac[m-n])%Mod;
}
int main(){
	freopen("sequence.in","r",stdin);
	freopen("sequence.out","w",stdout);
	in(n);in(m);in(k);
	fac[0]=1;invfac[0]=1;
	for(int i=1;i<=n;i++){
		fac[i]=(fac[i-1]*i)%Mod;
		invfac[i]=(invfac[i-1]*ksm(i,Mod-2))%Mod;
	}
	for(int i=0;i<=m;i++)
		in(v[i]);
	for(int i=0;i<=n;i++)
		f[0][i][i/2][i%2]=ksm(v[0],i);
	for(int i=1;i<=m;i++)
		for(int j=0;j<=n;j++){
			ll tp=ksm(v[i],j);
			for(int p=0;p<=k&&p<=i+1;p++)
				for(int l=0;l<=n-j;l++){
					ll ca=(C(j,l+j)*tp)%Mod;
					for(int x=0;x<=n-j;x++){
						if(p+(j+x)%2>k)continue;
						f[i][j+l][(j+x)/2][p+(j+x)%2]+=(ca*f[i-1][l][x][p])%Mod;
						if(f[i][j+l][(j+x)/2][p+(j+x)%2]>=Mod)f[i][j+l][(j+x)/2][p+(j+x)%2]-=Mod;
					}
				}
		}
	for(int i=m+1;i<=m+8;i++)
		for(int x=0;x<=n;x++)
			for(int p=0;p<=k;p++)
				f[i][n][x/2][p+x%2]=(f[i][n][x/2][p+x%2]+f[i-1][n][x][p])%Mod;
	ll ans=0;
	for(int i=1;i<=k;i++)
		ans=(ans+f[m+8][n][0][i])%Mod;
	printf("%lld\n",ans);
	return 0;
}
2021/11/20 14:16
加载中...