当前位置:   article > 正文

python解越南逆天小学数学题_python要算很久的数学题

python要算很久的数学题

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

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

题目如果由我自己来做,实在不知道怎么做,只能感叹现在的小学生实在是太厉害(又或者是他们的悲哀呢,毕竟每一个孩子都应该有个快乐童年,而不是被作业困在教室和家里)。 于是就让我来拯救他们吧大笑,代码很简单,不过由于是新学的python,用的可能还是以前学C的思维,当练练手吧。


#python 2.7.9'
运行
  1. for i in range(1,10):
  2. for j in range(1,10):
  3. for k in range(1,10):
  4. for l in range(1,10):
  5. for m in range(1,10):
  6. for n in range(1,10):
  7. for o in range(1,10):
  8. for p in range(1,10):
  9. for q in range(1,10):
  10. if(i+13*j/k+l+12*m-n-11+o*p/q-10==66):
  11. print i,j,k,l,m,n,o,p,q

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

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

  1. #include<stdio.h>
  2. int main(){
  3. int i,j,k,l,m,n,o,p,q;
  4. int count=0;
  5. long NUM=0;
  6. float an=0;
  7. NUM=9*9*9*9*9*9*9*9*9;
  8. for(i=1;i<10;i++)
  9. for(j=1;j<10;j++)
  10. for(k=1;k<10;k++)
  11. for(l=1;l<10;l++)
  12. for(m=1;m<10;m++)
  13. for(n=1;n<10;n++)
  14. for(o=1;o<10;o++)
  15. for(p=1;p<10;p++)
  16. for(q=1;q<10;q++)
  17. if(i+13*j/k+l+12*m-n-11+o*p/q-10==66){
  18. count=count+1;
  19. //printf("%d%d%d%d%d%d%d%d%d\n",i,j,k,l,m,n,o,p,q);
  20. }
  21. an=float(count)/NUM;
  22. printf("%d %ld %f",count,NUM,an);
  23. return 0;
  24. }
上面的打印结果:3359844  387420489  0.008672

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


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/810068
推荐阅读
相关标签
  

闽ICP备14008679号