在CodeWare.com上运行测试时出现问题



我的代码有什么问题吗这是一个来自codewar的问题,我正在努力解决,它在atom上有效,但当我在网站上运行测试时,它显示了一个错误?

如果我们列出所有10以下的自然数,它们是3或5的倍数,我们得到3、5、6和9。这些倍数之和是23。

完成解决方案,使其返回低于传入数字的3或5的所有倍数的总和。

注意:如果数字是3和5的倍数,则只计算一次。此外,如果一个数字是负数,则返回0(对于有它们的语言(

问题的链接https://www.codewars.com/kata/514b92a657cdc65150000006/train/c

#include <stdio.h>
int sum_of_mul_of_3or5(int n)
{
if(n<0){return 0;}
int s = n,sum = 0,array[s];
for(int i=1; i<n;i++)
{
array[i-1] = 0;
if(i%3 == 0|| i%5 == 0){array[i-1] = i;}
sum += array[i-1];
}
for(int i=0; i<n; i++)
{
printf("%d ",array[i]);
}
return sum;
}
int main(){

int limit; printf("Enter a limit number: "); scanf("%d",&limit);
int sum = sum_of_mul_of_3or5(limit);
printf("n");
printf("%d",sum);

return 0;}

您的算法是O(N(-它应该是O(1(。

计算给定n下有多少个15。例如200,有n=13个长度为15的块。每15次(从K到K+14(,你会得到K、K+3、K+5、K+6、K+9、K+10、K+12,总共7N+45。将它们相加,只需使用N(N+1(/2*7+45N。然后把195到199之间你没有考虑到的额外结尾部分加回来。

最新更新