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用不了,如果用实型就不能输出整数

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.