玄学WA
查看原帖
玄学WA
1471248
lifeam楼主2024/10/18 14:14

除了第一个全WA, 但是我把第二个输入输出下下来发现是对的? 代码如下:

#include<bits/stdc++.h> 
using namespace std;
int a[30303][203],b[203],sum[203];
int k,w;
void jia(int q[],int p[]){
    int lenc=0,x=0;
    while (lenc<q[0]||lenc<p[0]){
        q[++lenc]=q[lenc]+p[lenc]+x;
        x=q[lenc]/10;
        q[lenc]%=10;    
    }
    if (x>0) q[++lenc]=x;
    q[0]=lenc;
    return;
}
int main(){
//	freopen("P1066_2.in","r",stdin);
	scanf("%d%d",&k,&w);
	int h=w/k;
	int mi=(1<<k)-1;
	k=w-h*k;
	int hmax=0;
	for (int i=0;i<k;i++) hmax+=1<<i;
	if (h==1||(h==2&&k==0)){
        if (k==0) hmax=mi;
		int ans=0;
        for (int i=1;i<=hmax;i++) ans+=mi-i;
        cout<<ans<<endl;
        return 0;
    }
    for (int i=1;i<mi;i++){
    	a[i][1]=i;
		a[i][0]=1;
		jia(sum,a[i]);
	}
	for (int i=3;i<=h;i++){
        for (int j=1;j<=mi-i+1;j++){
        	jia(a[j],a[j-1]);
        	jia(sum,a[j]);
		}
	}
	for (int i=1;i<=mi-h;i++) jia(a[i],a[i-1]);
	for (int i=mi-h;i>=max(mi-h-hmax+1,1);i--) jia(sum,a[i]);
	for (int i=sum[0];i>0;i--) 	cout<<sum[i];
	return 0;
}

有大佬能解释/调整下吗

2024/10/18 14:14
加载中...