# 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全错了,看报错信息应该是输出了1,但是我本地跑出来都是0啊。 甚至用洛谷自己的在线IDE也全都是0,奇怪。。。