麻烦大神把这篇Pascal代码翻译成C++
因为没有时间学习Pascal所以拜托了!
http://www.docin.com/p-939720773-f8.html
这篇文档第71页至第72页的生日蛋糕问题下的代码
花钱去雇一个穷学生帮你做吧。也没多少钱。说得口气真傲慢啊,你没有时间,搞得好像人家闲着没事给你干苦力倒是有时间。
当然,如果你有具体的问题,指点下,我想大家还是很乐意帮你的。
。。。当作日行一善吧
另外这个pascal代码写的太丑了,我翻译的时候感觉很难受,怀念当年在集训队的日子
#include
#include
using namespace std;
//var define
long n,m,ans,i,j,min;
long thr[21];
long er[21];
int a[21]; int b[21]; int ansa[21]; int ansb[21];
//find func
void find(long rest, long x, long lasr, long lash, long s)
{
int i, j, xi, xj;
if (s>min) return;
if (x=m+1){
if (rest!=0) return;
if (rest==0) {
if (s<min) {
min=s;
ansa=a;
ansb=b;
}
return;
}
}
xi=0;
for (int i=1; i<=(m-x); i++) xi+=thr[i];
if ((rest-xi)<0) return;
if (x!=1) {
xj=0;
for (int i=1; i<=(m-x+1); i++) xj+=sqr(lasr-i)*(lash-i);
if (rest>xj) return;
}
for (int j=lash-1; j>=(m-x+1); j--)
{
if ((i*i*j+xi)<=rest){
a[x]=i;
b[x]=j;
if (x==1) find (rest-i*i*j, x+1, i, j, s+2*i*j+i*i);
else find(rest-i*i*j, x+1, i, j, s+2*i*j) ;
}
}
}
//main func
int main()
{
cin>>n>>m;
min=1 << 28;
for (int i=m; i>0; i--)
{
thr[i]=i*i*i;
er[i]=i*i;
}
find(n,1,(int)(sqrt(n/m)),n,0);
cout<<min<<endl;
return 0;
}