我们还是先来看一下题目:
从一个22网格的左上角开始,有6条(不允许往回走)通往右下角的路。
对于2020的网格,这样的路有多少条?
20*20的方格中,从左上角到右下角,不论怎么走,都只需要40步,其中必然有20步时横着走,20步时竖着走,你可以先全部先横着走,然后竖着走。所以这个问题变成了从40步中取出20步一共有多少种方法?用排列组合C(20上)(40下)
程序如下:
use bignum; $sum0=1; $sum1=1; for($i=40;$i>20;$i--) { $sum0=$sum0*$i; } print"$sum0\n"; for($j=20;$j>0;$j--) { $sum1=$sum1*$j; } print "$sum1\n"; $sum=$sum0/$sum1; print $sum."\n";
0 1 1 1 1 1 2 3 4 5 1 3 6 10 15 1 4 10 20 35 1 5 15 35 70 每个数代表走到此处的走法,是它上方和左边的两个数之和。
use strict; use warnings; my @sum; my $i; my $j; for($i=0;$i<21;$i++) { for($j=0;$j<21;$j++) { $sum[$i][0]=1; $sum[0][$j]=1; } } for($i=1;$i<21;$i++) { for($j=1;$j<21;$j++) { $sum[$i][$j]=$sum[$i-1][$j]+$sum[$i][$j-1]; } } print $sum[20][20];
这里要注意的是:20*20的方格,每一条线上,有21个点。所以在循环的时候要注意。
215 = 32768 并且其各位之和为 is 3 + 2 + 7 + 6 + 8 = 26.
21000 的各位数之和是多少?
不知道这个题目有什么技巧没有!use strict; use warnings; use bignum; my $num; $num=2**1000; print $num."\n";这里我们得到结果:
C:\WINDOWS\system32\cmd.exe /c perl "F:\perl\b.pl" 10715086071862673209484250490600018105614048117055336074437503883703510511249361 22493198378815695858127594672917553146825187145285692314043598457757469857480393 45677748242309854210746050623711418779541821530464749835819412673987675591655439 46077062914571196477686542167660429831652624386837205668069376 Hit any key to close this window...有些同学可能会接着用程序处理的方法,但是我想,把他们复制出来,然后在每个数字后面加上一个加号更简单高效。处理的过程因为有了vim而变的异常简单,因为vim有宏处理。
$sum=1+0+7+1+5+0+8+6+0+7+1+8+6+2+6+7+3+2+0+9+4+8+4+2+5+0+4+9+0+6+0+0+0+1+8+1+0+5+6+1+4+0+4+8+1+1+7+0+5+5+3+3+6+0+7+4+4+3+7+5+0+3+8+8+3+7+0+3+5+1+0+5+1+1+2+4+9+3+6+1+2+2+4+9+3+1+9+8+3+7+8+8+1+5+6+9+5+8+5+8+1+2+7+5+9+4+6+7+2+9+1+7+5+5+3+1+4+6+8+2+5+1+8+7+1+4+5+2+8+5+6+9+2+3+1+4+0+4+3+5+9+8+4+5+7+7+5+7+4+6+9+8+5+7+4+8+0+3+9+3+4+5+6+7+7+7+4+8+2+4+2+3+0+9+8+5+4+2+1+0+7+4+6+0+5+0+6+2+3+7+1+1+4+1+8+7+7+9+5+4+1+8+2+1+5+3+0+4+6+4+7+4+9+8+3+5+8+1+9+4+1+2+6+7+3+9+8+7+6+7+5+5+9+1+6+5+5+4+3+9+4+6+0+7+7+0+6+2+9+1+4+5+7+1+1+9+6+4+7+7+6+8+6+5+4+2+1+6+7+6+6+0+4+2+9+8+3+1+6+5+2+6+2+4+3+8+6+8+3+7+2+0+5+6+6+8+0+6+9+3+7+6; print $sum."\n";
C:\WINDOWS\system32\cmd.exe /c perl "F:\perl\c.pl" 1366 Hit any key to close this window...