pythonベトナムの逆天小学校の数学の問題を解く
1711 ワード
テーマはベトナムの保禄小学校の3年間のクラスから来て、学生は上から下まで、左から右までの順序を必要として、1から9の数字を記入して、繰り返し記入することができて、そして先に乗じて減らした演算の法則によって、全体の計算式を完成します.
もし私が自分でやったら、本当にどうすればいいか分からないので、今の小学生は本当にすごいと感嘆するしかありません(あるいは彼らの悲しみですね.結局、すべての子供は宿題で教室や家に閉じ込められているのではなく、楽しい子供時代を持つべきです).そこで私は彼らを救うようにしましょう.コードは簡単ですが、新学のpythonなので、以前Cの思考を学んだので、手を練習しましょう.
しかしpythonの効率の問題を考えると、すべてを見終わるのに長い間待たなければならない場合は、時間+印刷時間を計算します.
だから、C言語で見ることをお勧めします.
すなわち,題意配列による組合せは合計387420489種,等式に適合する場合は3359844種であり,合計で0.008672を占める.
もし私が自分でやったら、本当にどうすればいいか分からないので、今の小学生は本当にすごいと感嘆するしかありません(あるいは彼らの悲しみですね.結局、すべての子供は宿題で教室や家に閉じ込められているのではなく、楽しい子供時代を持つべきです).そこで私は彼らを救うようにしましょう.コードは簡単ですが、新学の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
",i,j,k,l,m,n,o,p,q);
}
an=float(count)/NUM;
printf("%d %ld %f",count,NUM,an);
return 0;
}
の印刷結果:3359844 3874204890.8672すなわち,題意配列による組合せは合計387420489種,等式に適合する場合は3359844種であり,合計で0.008672を占める.