几
#include<cstdio>
using namespace std;
int n,p;int dp[199][1999],ans[199];
int fastpow (int a,int k)
{
int ans=1;
while(k){
if(k%2==1)(ans*=a)%=p;
a=a*a%p;
k/=2;
}
return ans;
}
int main(){
scanf("%d%d",&n,&p);
dp[1][1]=1;
for(int i=0;i<=n;i++)
for(int j=0;j<=i;j++)
if(dp[i][j]>0)
{
//dp[i+1][j+1]+=dp[i][j];
for(int k=i+1;k<=n;k++)
{(dp[k][j+1]+=dp[i][j]*(fastpow(2,(((k-i-2)*(k-i-1))>>1)))%p)%=p;
printf("%d%d%d",k,j+1,dp[k][j+1]);
}
}
for(int i=1;i<=n;i++)
{
ans[i]=fastpow(2,((i*(i+1))>>1))%p;
for(int j=1;j<i;j++)
{
ans[i]-=dp[i][j]*ans[j]%p;
while(ans[i]<0)ans[i]+=p;
}
}
printf("%d",ans[n]);
}
个
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
int n;
int MOD;
long long pw[47000];
long long f[47000];
long long dp[330][330];
int main()
{
scanf("%d %d",&n,&MOD);
pw[0]=1;
dp[0][0]=1;
for(int i=1;i<=n*(n+1)/2;i++)
{
pw[i]=(pw[i-1]*2)%MOD;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<=i;j++)
{
if(dp[i][j]>0)
{
dp[i+1][j+1]+=dp[i][j];
dp[i+1][j+1]%=MOD;
for (int k=i+2;k<=n;k++)
{
dp[k][j+1]+=dp[i][j]*pw[(k-i-2)*(k-i-1)/2]%MOD;
dp[k][j+1]%=MOD;
printf("%d%d%d",k,j+1,dp[k][j+1]);
}
}
}
}
for(int i=1;i<=n;i++)
{
f[i]=pw[i*(i+1)/2];
for(int j=1;j<i;j++)
{
f[i]-=dp[i][j]*f[j]%MOD;
while(f[i]<0)
{
f[i]+=MOD;
}
f[i]%=MOD;
}
}
f[n]%=MOD;
printf("%lld\n",f[n]);
return 0;
}
你 完全蒙蔽。。。。