论此题神奇的Subtask
查看原帖
论此题神奇的Subtask
924166
shiranai楼主2024/1/19 01:06
# include <iostream>
# include <stdlib.h>
# define MOD 10000

using namespace std;

class BigData{
	public:
		int pos[11];
	BigData(){
		for(int i=0;i<11;i++)
			pos[i]=0;
	}
	BigData operator+(BigData &ano){
		BigData ret;
		for(int i=0;i<11;i++)
			ret.pos[i]=this->pos[i]+ano.pos[i];
		for(int j=0;j<10;j++){
			ret.pos[j+1]+=(ret.pos[j]/MOD);
			ret.pos[j]%=MOD;
		}
		return ret;
	}
	BigData operator*(int mul){
		BigData ret;
		for(int i=0;i<11;i++)
			ret.pos[i]=this->pos[i]*mul;
		for(int j=0;j<10;j++){
			ret.pos[j+1]+=(ret.pos[j]/MOD);
			ret.pos[j]%=MOD;
		}
		return ret;	
	}
	BigData operator/(BigData &ano){
		BigData ret;
		for(int s=0;s<10;s++)
			for(int a=0;a<=s;a++){
				ret.pos[s]+=this->pos[a]*ano.pos[s-a];
				ret.pos[s+1]+=(ret.pos[s]/MOD);
				ret.pos[s]%=MOD;
			}
		for(int a=0;a<=10;a++)
			ret.pos[10]+=this->pos[a]*ano.pos[10-a];
		return ret;
	}
	void printData(){
		int p=10;
		while(!pos[p] && p>=0) p--;
		if(p<0){
			printf("0");
			return;
		}
		cout<<pos[p];
		for(p--;p>=0;p--)
			printf("%04d",pos[p]);
	}
	bool operator>(BigData &ano){
		for(int i=10;i>=0;i--)
			if(this->pos[i]>ano.pos[i])
				return true;
			else if(this->pos[i]<ano.pos[i])
				return false;
		return false;
	}
};

int n,k;
BigData dp[42][42][7];

int getdi(){
	char ch;
	while((ch=getchar())<'0' || ch>'9');
	return ch-'0';
}

BigData todig(int l,int r){
	BigData ret=dp[l][l][0];
	l++;
	while(l<=r){
		ret=ret*10+dp[l][l][0];
		l++;
	}
	return ret;
}

int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++)
		dp[i][i][0].pos[0]=getdi();
	for(int i=1;i<=n;i++)
		for(int j=i;j<=n;j++)
			dp[i][j][0]=todig(i,j);
	for(int mul=1;mul<=k;mul++)
		for(int len=mul+1;len<=n;len++)
			for(int left=1;left+len-1<=n;left++){
				int right=left+len-1;
				BigData res;
				for(int t=left;t<right;t++)
					if((res=dp[left][t][0]/dp[t+1][right][mul-1])>dp[left][right][mul])
						dp[left][right][mul]=res;
			}
	dp[1][n][k].printData();
	return 0;
}

请问一下各位大佬我的代码有什么问题呢,洛谷评测显示前三个Subtask全错了,看报错信息应该是输出了11,但是我本地跑出来都是00啊。 甚至用洛谷自己的在线IDE也全都是00,奇怪。。。

2024/1/19 01:06
加载中...