求N!左边第二位的数字pascal!不要C++!
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/10/02 06:37:57
求N!左边第二位的数字pascal!不要C++!
求N!左边第二位的数字
Description
求N!左边第二位的数字k
Input
只有一行且只有一个正整数:N
( 4
求N!左边第二位的数字
Description
求N!左边第二位的数字k
Input
只有一行且只有一个正整数:N
( 4
算完阶乘后,转为字符串就好处理了.
program Project2(input,output);
var
N:Integer;
S:string;
function jc(i:longint):longint;
var j:Integer;
begin
Result:=1;
for j:=1 to i do
result:=result*j;
end;
begin
read(N);
Str(jc(N),S);
Writeln(N,'!=',S);
Writeln('第二个数字是:', s[2]);
end.
再问: 算阶乘n=1000000时会超类型(包括qword、int64)!
再答: 100万的阶乘的话,应该没有什么类型能存储吧,也无法保证精度。既然只是要我们求出第2位的数,我的想法是每次相乘的时候,都除以一个10的N次幂的数,只要保证整数部分有两位就可以了,后面的精度就不要了。比如15!=1307674368000。可以只保存为13.07674368,再乘以16的时候,再除以10,一直保持两位整数就够了。因为我们只求左边第二位的数字。
再问: 本人没看懂,程序? 可以通过的话奖50分!
再答: 这是我在DELPHI7上写的代码,你参考一下,没装PASCAL的编译器 主要是我写了注释的那里,只保持前面的精度就可以了, 这样算的话,就算是你要算一千万的也能算。 program Project1; {$APPTYPE CONSOLE} uses SysUtils; var N:Integer; S:string; function jc(i:longint):double; var j:Integer; begin Result:=1; for j:=1 to i do begin result:=result*j; {当数大于100W的时候,除以1W,只保持前面的精度} while Result>1000000 do result:=Result/10000; end; end; begin read(N); S:=inttostr(trunc(jc(N))); Writeln('第二个数字是:', s[2]); readln end.
program Project2(input,output);
var
N:Integer;
S:string;
function jc(i:longint):longint;
var j:Integer;
begin
Result:=1;
for j:=1 to i do
result:=result*j;
end;
begin
read(N);
Str(jc(N),S);
Writeln(N,'!=',S);
Writeln('第二个数字是:', s[2]);
end.
再问: 算阶乘n=1000000时会超类型(包括qword、int64)!
再答: 100万的阶乘的话,应该没有什么类型能存储吧,也无法保证精度。既然只是要我们求出第2位的数,我的想法是每次相乘的时候,都除以一个10的N次幂的数,只要保证整数部分有两位就可以了,后面的精度就不要了。比如15!=1307674368000。可以只保存为13.07674368,再乘以16的时候,再除以10,一直保持两位整数就够了。因为我们只求左边第二位的数字。
再问: 本人没看懂,程序? 可以通过的话奖50分!
再答: 这是我在DELPHI7上写的代码,你参考一下,没装PASCAL的编译器 主要是我写了注释的那里,只保持前面的精度就可以了, 这样算的话,就算是你要算一千万的也能算。 program Project1; {$APPTYPE CONSOLE} uses SysUtils; var N:Integer; S:string; function jc(i:longint):double; var j:Integer; begin Result:=1; for j:=1 to i do begin result:=result*j; {当数大于100W的时候,除以1W,只保持前面的精度} while Result>1000000 do result:=Result/10000; end; end; begin read(N); S:=inttostr(trunc(jc(N))); Writeln('第二个数字是:', s[2]); readln end.
求N!左边第二位的数字pascal!不要C++!
求N!左边第二位的数字 pascal
输入一个整数n,求它各位上的数字和 pascal
pascal求10000以内n的阶乘?
PASCAL求2的n次方
pascal题:求N个数的和,给出一个正整数N,可求出从1开始的这N个数的全部各个数位上的数字之和.
pascal求定义一函数fz3,求1—n之间3的倍数之和.定义一函数fz5,求任意自然数n的各位数字之和.
求N个整数的平均数、众数和中位数 用pascal,我只学过pascal
.求两个自然数M和N的最小公倍数.pascal
用PASCAL怎么求x的N次方
求n个数的最大值和最小值用Pascal
pascal语言 求n个自然数的最大公约数和最小公倍数