无一例外全部是:Wrong Answer.wrong answer On line 1 column 1, read -, expected 1.
in:
6 2
356510
out:
107100
代码如下:
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
struct gj{
int weishu;
short shu[155];
void chushi(){
weishu=0;
for(int i=1;i<=154;i++)
shu[i]=0;
return ;
}
};
gj yuan;
gj maxx;
int n, k;
gj cheng(gj a,gj b){
gj out;
out.chushi();
out.weishu=a.weishu+b.weishu;
for(int i2=1;i2<=b.weishu;i2++){
for(int i=1;i<=a.weishu;i++)
{
out.shu[i+i2-1]+=a.shu[i]*b.shu[i2];
}
}
for(int i=1;i<out.weishu;i++){
out.shu[i+1]+=out.shu[i]/10;
out.shu[i]%=10;
}
if(out.shu[out.weishu]==0) out.weishu--;
return out;
}
bool dx(gj a,gj b){
if(a.weishu>b.weishu) return 1;
if(a.weishu<b.weishu) return 0;
for(int i=a.weishu; i>=1; i--)
{
if(a.shu[i]>b.shu[i]) return 1;
if(a.shu[i]<b.shu[i]) return 0;
}
return 1;
}
void fen(int fensheng,int weisheng,gj xianshu)
{
gj qu;
qu.chushi();
if(fensheng==1)
{
for(int i=n-weisheng+1;i<=n;i++)
{
qu.weishu++;
qu.shu[qu.weishu]=yuan.shu[i];
}
gj temp=cheng(xianshu,qu);
if(!dx(maxx,temp)) maxx=temp;
return ;
}
for(int i=1;weisheng-i-fensheng+1>=0;i++)
{
qu.weishu++;
qu.shu[i]=yuan.shu[n-weisheng+i];
fen(fensheng-1,weisheng-i,cheng(xianshu,qu));
}
return ;
}
void fen(int fensheng,int weisheng)
{
gj xianshu;
xianshu.chushi();
xianshu.weishu=1;
xianshu.shu[1]=1;
gj qu;
qu.chushi();
if(fensheng==1)
{
for(int i=n-weisheng+1;i<=n;i++)
{
qu.weishu++;
qu.shu[qu.weishu]=yuan.shu[i];
}
gj temp=cheng(xianshu,qu);
if(!dx(maxx,temp)) maxx=temp;
return ;
}
for(int i=1;weisheng-i-fensheng+1>=0;i++)
{
qu.weishu++;
qu.shu[i]=yuan.shu[n-weisheng+i];
fen(fensheng-1,weisheng-i,cheng(xianshu,qu));
}
return ;
}
int main(){
cin>>n>>k;
getchar();
yuan.weishu=n;
for(int i=n;i>=1;i--) yuan.shu[i]=getchar()-'0';
maxx.chushi();
fen(k+1,n);
for(int i=maxx.weishu;i>=1;i--) cout<<maxx.shu[i];
return 0 ;
}
ps.回复别忘@,求求了!Q.Q