当前位置:三九宝宝网 → 宝宝教育 → 写作范文 → 正文

阶乘统计 pascal

更新:12-27 整理:39baobao.com
字体:

[excel统计总人数]空白单元格输入 =SUMPRODUCT(LEN(A1:A3)-LEN(SUBSTITUTE(A1:A3,",",""))) 我举例是a1--a3 你自己改成你的数据范围 哦,我是按逗号是中文逗号算的 如果是英文逗号 自己改公式中的...+阅读

思路:

∵只需要输出k为,k不确定

∴要用一个高精度数组

∵最后的“0”不一定会输出,而且乘任何数都还是0

∴可以直接用一个变量记录最后的“0”的个数

运算时可直接用一个 for i:=1 to n do 的循环完成阶乘运算,每算一次处理一次末尾的“0”,再删去前面超过k位太多的数(但k位前要保留几位,预防末尾有0删去而前面没有进位,则结果就可能不对了)。

鉴于效率,可以开int64数组,每个变量记录9位(方便直接相乘)

for i:=1 to n do 的循环可以每几位先相乘后,再与原来的k位相乘,以减少高精度运算时的时间消耗。

const

maxk=100;

jin=1000000000;

var

ans:array [1..maxk+2] of int64; {多留18位}

k,n,zero:integer;

time:int64;

i,j:integer;

procedure gjd(x:int64);

{var ...}

begin

{ans各位乘x}

{处理进位(div jin 和 mod jin)}

{去末尾的0}

end;

begin

zero:=0;

readln(n,k);

i:=1;

repeat

time:=1;

while (time*i<=jin) and (i<=n) do begin

time:=time*i;

inc(i);

end;

gjd(time); {进入高精度运算,ans数组 乘 time}

if i>n then break;

until i>n;

{输出结果:}

{判断ans是否有k位,若不足再判断加上zero(末尾0的个数)有没有k位,最后输出。}

end.

{高精度和最后的输出判断就由你自己写啦,总的思路我已经给出了。}

本文地址:https://www.39baobao.com/show/33_15455.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.

以下为关联文档:

怎么样用excel统计函数计算人数假设你的数据库已经建立好了. ABC两列为姓名,分数,职业 A1,B1为标题 下面开始为数据. 总共有1000行. 在D1输入"分数"这两个字(要与你数据库标题一样) 在D2输入>=70 在E1输入"职业"...

怎么用excel统计总人数分类汇总只能处理简单的数据。 可以用公式。假如第一行是标题,要统计001先生、女士、未填的人数: =sumproduct((a2:a100="001")*(b2:b100="先生")) =sumproduct((a2:a100="001")*(b2:...

在EXCEL里面怎么统计算出各阶段的人口数1.根据身份证号计算年龄 =IF(A2<>"",DATEDIF(TEXT((LEN(A2)=15)*19&MID(A2,7,6+(LEN(A2)=18)*2),"#-00-00"),TODAY(),"y"),) 注意:A2单元格为身份证号,且为文本格式。 2.根据身份证...

pascal统计数字这道题是NOIp 2007的复赛提高组第一题吧? 排序+线性统计的处理即可。 数据规模n在200000因此O(nlogn)排序【即快排或其他高效排序法】可过。数据范围在1,500,000,000<maxlong...

统计数字Pascalvar n,i,m,s : qword; begin repeat readln(n); until (1 s := 0; for i := 1 to n do begin m := i; while m >0 do begin if n mod 10 = 0 then begin s := s + 1; break;...

pascal怎么统计出字符数量如果你的字符全是在一行的话,可以用一个string类型读进来,然后用length函数统计,代码如下(从1.txt读入,输出到屏幕): program 1; var s:string; begin assign(input,'1.txt'); rese...

pascal统计大写英文字母的个数var ch:char;s,j,i:integer; begin read(ch); while ch<>'.' do begin if(ch>='A')and(ch<='Z')then s:=s+1; read(ch); end; readln; writeln(s); end. 话说我就是回答你另...

编程noip2010数字统计用Pascal怎么做var ans,n,m,i:longint; function js(x:longint):longint; var x1:0..9; begin js:=0; while x>0 do begin x1:=x mod 10; if x1=2 then js:=js+1; x:=x div 10; end; end;...

请问如何用pascal编统计素数的程序下面给一个判断素数的函数,其他的自己琢磨琢磨。 function zhisu(n:dword):boolean; var j:dword; findd:boolean; begin if n=1 then zhisu:=false else if (n=2)or(n=3) th...