求助!这题很水,但是本蒟蒻只打了90,第一个测试点WA;
查看原帖
求助!这题很水,但是本蒟蒻只打了90,第一个测试点WA;
486441
13833925596mm楼主2022/8/11 20:43
#include<bits/stdc++.h>
using namespace std;
int n,m,a[100001]={0},b[100001]={0},c[100001]={0};
int len=1,len2=1,len3;
void chf(int x){//对A数组进行高精乘单精
    for(int i=1;i<=len;i++) a[i]*=x;
    for(int i=1;i<=len;i++){
        a[i+1]+=a[i]/10;
        a[i]%=10;
    }
    len++;
    while(a[len]>9){
        len++;
        a[len]+=a[len-1]/10;
        a[len-1]%=10;
    }
    while(a[len]==0) len--;
}
void chfb(int x){//对B数组进行高精乘单精
    for(int i=1;i<=len2;i++) b[i]*=x;
    for(int i=1;i<=len2;i++){
        b[i+1]+=b[i]/10;
        b[i]%=10;
    }
    len2++;
    while(b[len2]>9){
        len2++;
        b[len2]+=b[len2-1]/10;
        b[len2-1]%=10;
    }
    while(b[len2]==0) len2--;
}
void andd(){//AB数组相加
	for(int i=1;i<=len3;i++){
		c[i]=a[i]+b[i]+c[i];
		c[1+i]=c[i]/10;
		c[i]=c[i]%10;
	}
	len3++;
	while(len3>0 && c[len3]==0) len3--;
}
int main(){
    a[1]=1;
    b[1]=1;
    cin>>n>>m;
    for(int i=1;i<=n;i++) chf(i);
    chf(n+1);
    chf(n);
    for(int i=n+3,q=1;q<=m;i--,q++) chf(i);
    for(int i=1;i<=n;i++) chfb(i);
	chfb(2);
	chfb(n+1);
	chfb(m);
    for(int i=n+2,q=1;q<m;i--,q++){
		chfb(i);
		//for(int o=len2;o>=1;o--) cout<<b[o];
	}
	len3=max(len,len2);
	andd();
	for(int i=len3;i>=1;i--) cout<<c[i];
    return 0;//公式是A N N*A N+1 2*A*A N+3 M  +  A N N*A 2 2*N+1*M*A N+2 M-1
}
2022/8/11 20:43
加载中...