pascal求立方和
来源:百度知道 编辑:UC知道 时间:2024/04/29 02:26:41
Description
给定一个正整数n,求S的值
S=1^3+2^3+…+n^3
Input
只有一行且只有一个正整数:n
( 1 <= n <= 10^18 )
Output
只有一行且只有一个正整数:S
Sample Input
2
Sample Output
9
是不是要用高精度来做?别的办法行吗
n的范围是 1 <= n <= 10^18 ,qword用不了,如果用实型就不能输出整数
给定一个正整数n,求S的值
S=1^3+2^3+…+n^3
Input
只有一行且只有一个正整数:n
( 1 <= n <= 10^18 )
Output
只有一行且只有一个正整数:S
Sample Input
2
Sample Output
9
是不是要用高精度来做?别的办法行吗
n的范围是 1 <= n <= 10^18 ,qword用不了,如果用实型就不能输出整数
10^18依次累加肯定会超时,只能使用S=n^2*(n+1)^2*(1/4) 这个公式,在计算时,可以使用高精度(+-*/,编程复杂度很高)
三次方累加公式+高精
over
n有取值范围吗?
用qword试试,不行就只能用高精了
高精度计算
不过范围太大,要用公式:S=n^2*(n+1)^2*(1/4)
用高精度先求 n(n-1)/2
然后再用高精求n(n-1)/2的平方
不用高精度,用函数方便(其实不方便,但要有用函数的习惯)。你若要足够大,用int64?以下是我的程序:
program hfdgjf;
Var i,n,t:longint;
function pp(s:longint):longint;
begin
pp:=s*s*s;
end;
begin
readln(n);
for i:=1 to n do
t:=t+pp(i);
writeln('t=',t);
readln;
end.
如果,你的机子内存不够,那就只用longint.