- 注册时间
- 2008-11-26
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 149507
- 在线时间
- 小时
|
楼主 |
发表于 2012-4-26 14:05:46
|
显示全部楼层
/*此程序使用pari/gp运行*/
/*程序编制时间:2012年4月26日*/
GetDigits(n,d)=
{
/*获得整数n从右向左数的第d位数字,
比如GetDigits(7458,3)=4 */
(n%10^d-n%10^(d-1))/10^(d-1)
}
{
for(a=1,9,
for(b=0,9,
for(c=0,9,
for(d=0,9,
for(e=0,9,
for(f=1,9,
for(g=0,9,
for(h=0,9,
for(i=0,9,
chushu=a*10^5+b*10^4+c*10^3+d*10^2+70+e;\\形成除数
shang=f*10^4+g*10^3+700+h*10+i;\\形成商
beichushu=chushu*shang;\\得到被除数,也就是两者的成绩
if((beichushu<10^9)||(beichushu>10^10),next);\\如果被除数不是10位数,则继续下一个循环
if(GetDigits(beichushu,8)!=7,next);\\如果被除数倒数第八位不是7,那么继续下一个循环
x4=GetDigits(beichushu,4);\\得到被除数的千位
x3=GetDigits(beichushu,3);\\得到被除数的百位
x2=GetDigits(beichushu,2);\\得到被除数的十位
x1=GetDigits(beichushu,1);\\得到被除数的个位
num=(beichushu-beichushu%10000)/10000;\\被除数舍掉后四位
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
b0=chushu*f;
if(b0<10^5||b0>10^6,next);
\\第01次除法
a1=num-chushu*f;
if(a1<10^5||a1>10^6,next);
if(GetDigits(a1,1)!=7,next);
a12=a1*10+x4;
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
b1=chushu*g;
if(b1<10^6||b0>10^7,next);
\\第02次除法
a2=a12-b1;
if(a2<10^4||a2>10^5,next);
if(GetDigits(a2,4)!=7,next);
a22=a2*10+x3;
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
b2=chushu*7;
if(b2<10^5||b2>10^6,next);
\\第03次除法
if(GetDigits(chushu*7,5)!=7,next);
a3=a22-chushu*7;
if(a3<10^5||a2>10^6,next);
a32=a3*10+x2;
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
b3=chushu*h;
if(b3<10^6||b3>10^7,next);
\\第04次除法
if(GetDigits(chushu*h,3)!=7,next);
a4=a32-chushu*h;
if(a4<10^4||a2>10^5,next);
a42=a4*10+x1;
if((a42-chushu*i)!=0,next);
\\结束上面的所有的操作,并且打印结果
print([chushu,beichushu,shang])
)
)
)
)
)
)
)
)
)
}
这是一个马虎的结果,其实我觉得代码还可以简单地优化一下,这样才更方便阅读! |
|