python 小学数学_python解越南逆天小学数学题

题目来自越南保禄小学三年班,学生需要由上至下、从左到右的顺序,填入1至9的数字,可重复填写,并按先乘除后加减的运算法则,完成整条算式。

0818b9ca8b590ca3270a3433284dd417.png

题目如果由我自己来做,实在不知道怎么做,只能感叹现在的小学生实在是太厉害(又或者是他们的悲哀呢,毕竟每一个孩子都应该有个快乐童年,而不是被作业困在教室和家里)。 于是就让我来拯救他们吧

0818b9ca8b590ca3270a3433284dd417.png,代码很简单,不过由于是新学的python,用的可能还是以前学C的思维,当练练手吧。

#python 2.7.9

for i in range(1,10):

for j in range(1,10):

for k in range(1,10):

for l in range(1,10):

for m in range(1,10):

for n in range(1,10):

for o in range(1,10):

for p in range(1,10):

for q in range(1,10):

if(i+13*j/k+l+12*m-n-11+o*p/q-10==66):

print i,j,k,l,m,n,o,p,q

但是鉴于python的效率问题,如果你想看完全部是要等很久的,计算时间+打印时间。

所以,建议再用C语言来看看:

#include

int main(){

int i,j,k,l,m,n,o,p,q;

int count=0;

long NUM=0;

float an=0;

NUM=9*9*9*9*9*9*9*9*9;

for(i=1;i<10;i++)

for(j=1;j<10;j++)

for(k=1;k<10;k++)

for(l=1;l<10;l++)

for(m=1;m<10;m++)

for(n=1;n<10;n++)

for(o=1;o<10;o++)

for(p=1;p<10;p++)

for(q=1;q<10;q++)

if(i+13*j/k+l+12*m-n-11+o*p/q-10==66){

count=count+1;

//printf("%d%d%d%d%d%d%d%d%d\n",i,j,k,l,m,n,o,p,q);

}

an=float(count)/NUM;

printf("%d %ld %f",count,NUM,an);

return 0;

}上面的打印结果:3359844  387420489  0.008672

即,根据题意排列组合总共的情况有387420489种,符合等式的情况有3359844种,在总情况中占0.008672。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值