level 3
13396519195
楼主
RT,急用,感激不尽!
#include<iostream>
#define N 10000
using namespace std;
int n,a[N],g,d[N],z=1;
print()
{ cin>>n;
}
int zhi()
{ int i,j,b[N],h=0,c[N],k=0;
for(i=1;i<=n;i++)
{for(j=2;j<i;j++)
if(i%j==0)
break;
if(j==i)
b[++h]=i;
}
for(i=1;i<=h;i++)
{ for(j=2;j<i;j++)
if(i%j==0)
break;
if(j==i)
c[++k]=i;
}
for(i=1;i<=k;i++)
a[i]=b[c[i]];
return k;
}
void max(int k)
{ int i,j=0,m,f;
m=n;
if(n==a[k])
{ d[1]=n,g=1;}
else
{ for(f=k;f>=1;f--)
{
for(i=f;i>=1;i--)
{ while(1)
{
if(n-a[i]>=0)
{n=n-a[i];
d[++j]=a[i];
}
else
break;
}
if(n==0)
break;
}
if(n==0)
{ g=j;break;}
else
{for(i=1;i<=N;i++)
d[i]=0;
n=m;
j=0;
}
}
if(f==0)
z=-1;
}
}
void disp()
{ int i;
if(z==-1)
cout<<"-1"<<endl;
else
{cout<<g<<endl;
for(i=g;i>=1;i--)
cout<<d[i]<<" ";
cout<<endl;
}
}
int main()
{ int k;
print();
k=zhi();
max(k);
disp();
return 0;
}
2016年10月28日 11点10分
1
#include<iostream>
#define N 10000
using namespace std;
int n,a[N],g,d[N],z=1;
print()
{ cin>>n;
}
int zhi()
{ int i,j,b[N],h=0,c[N],k=0;
for(i=1;i<=n;i++)
{for(j=2;j<i;j++)
if(i%j==0)
break;
if(j==i)
b[++h]=i;
}
for(i=1;i<=h;i++)
{ for(j=2;j<i;j++)
if(i%j==0)
break;
if(j==i)
c[++k]=i;
}
for(i=1;i<=k;i++)
a[i]=b[c[i]];
return k;
}
void max(int k)
{ int i,j=0,m,f;
m=n;
if(n==a[k])
{ d[1]=n,g=1;}
else
{ for(f=k;f>=1;f--)
{
for(i=f;i>=1;i--)
{ while(1)
{
if(n-a[i]>=0)
{n=n-a[i];
d[++j]=a[i];
}
else
break;
}
if(n==0)
break;
}
if(n==0)
{ g=j;break;}
else
{for(i=1;i<=N;i++)
d[i]=0;
n=m;
j=0;
}
}
if(f==0)
z=-1;
}
}
void disp()
{ int i;
if(z==-1)
cout<<"-1"<<endl;
else
{cout<<g<<endl;
for(i=g;i>=1;i--)
cout<<d[i]<<" ";
cout<<endl;
}
}
int main()
{ int k;
print();
k=zhi();
max(k);
disp();
return 0;
}