求序列平方和,感谢大佬了
本帖最后由 tyl555 于 2022-5-18 21:29 编辑请编写程序,输入正整数 n,计算平方和n=1+2^2+3^2+......+n^2
输入格式
整数 n
注:n 在 int 类型范围内,格式限定符采用 %d。
输出格式
实数 s
在 double 类型范围内,格式限定符采用 %.15g
注:代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MBs 。
//我这样写时间超了
#include<stdio.h>
int main()
{
int n,i,l;
double s;
scanf("%d",&n);
for(i=1;i<=n;i++)
s=s+(double)i*i;
printf("%.15g\n",s);
return 0;
}
你这不是时间超了吧,你这是直接写错了吧?
题目要求一个加,一个减,一个加,一个减,。。。
你这整的全是加?
还有,你的变量s没有初始化 还有,你的变量l没有使用
请编写程序,输入正整数 n,计算平方和n=1+2^2-3^2+......+n^2
这里是
n= 还是 s= ?
n=1+2^2-3^2+......+n^2
?
s=1+2^2-3^2+......+n^2
?
平方差公式 : a ^ 2-b ^ 2 == (a+b) * (a-b) 人造人 发表于 2022-5-18 20:35
请编写程序,输入正整数 n,计算平方和n=1+2^2-3^2+......+n^2
这里是
n= 还是 s= ?
s= 人造人 发表于 2022-5-18 20:31
你这不是时间超了吧,你这是直接写错了吧?
题目要求一个加,一个减,一个加,一个减,。。。
你这整的全 ...
平方序列求和 以int型的最大正整数测试,运行时间在10~15毫秒以内
int main(void) {
int n=0x7fffffff;
printf("%d\n", n);
double s = 0;
//scanf("%d", &n);
s = (double)n * (n + 1) * (2 * n + 1) / 6;
printf("%15g\n", s);
return 0;
} 风车呼呼呼 发表于 2022-5-18 21:53
以int型的最大正整数测试,运行时间在10~15毫秒以内
交上去,说有一个答案错了 tyl555 发表于 2022-5-19 12:09
交上去,说有一个答案错了
输出格式%.15g,少了个点你给加上 风车呼呼呼 发表于 2022-5-19 12:14
输出格式%.15g,少了个点你给加上
我加了的
#include<stdio.h>
int main(void) {
int n=0;
double s = 0;
scanf("%d", &n);
s = (double)n * (n + 1) * (2 * n + 1) / 6;
printf("%.15g\n", s);
return 0;
} tyl555 发表于 2022-5-19 12:31
我加了的
#include
int main(void) {
有一个答案错了是什么意思,n的21亿种可能情况中只有一种情况的答案错了? 风车呼呼呼 发表于 2022-5-19 12:51
有一个答案错了是什么意思,n的21亿种可能情况中只有一种情况的答案错了?
我交到了pta上面的,交上去显示有一个错了,是不是我改错了
#include<stdio.h>
int main(void) {
int n=0;
double s = 0;
scanf("%d", &n);
s = (double)n * (n + 1) * (2 * n + 1) / 6;
printf("%.15g\n", s);
return 0;
} 本帖最后由 风车呼呼呼 于 2022-5-19 13:54 编辑
tyl555 发表于 2022-5-19 12:55
我交到了pta上面的,交上去显示有一个错了,是不是我改错了
#include
int main(void) {
单独声明一个double变量装 n
double t = (double)n;
如果不允许声明除s、n以外的变量,那就把式子里的每个n都强制转换一下,应该是括号里的溢出了
s = (double)n * ( (double)n + 1) * (2 *(double) n + 1) / 6;
更简洁的,可以这样写
s = n * (n + 1.0) * (2.0 * n + 1) / 6; 风车呼呼呼 发表于 2022-5-19 13:28
单独声明一个double变量装 n
double t = (double)n;
大佬666,对了
页:
[1]