gpt4 book ai didi

c - 有效地添加可被 3 或 5 整除的数字

转载 作者:太空宇宙 更新时间:2023-11-04 01:47:07 25 4
gpt4 key购买 nike

列出给定数字下方的 3 或 5 的倍数的数字总和。

这是我的代码,找不到任何不必要的东西。但是 hackerrank 说它由于超时而终止,时间限制是 2 秒以给出预期的输出。输入第一行包含“t”,表示测试用例的数量。接下来是几行,每行包含一个整数。

#include <stdio.h>
void calc(int a){
int sum = 0;
for(int a0=1; a0<a; a0++){
if(a0%3==0 || a0%5==0){
sum+=a0;
}
}
printf("%d", sum);
}
int main(){
int t;
scanf("%d",&t);
int arr[t];
for(int a0 = 0; a0 < t; a0++){
scanf("%d",&arr[a0]);
}
for(int b=0; b<t; b++){
calc(arr[b]);
printf("\n");
}
return 0;
}

输入

2
10
100

输出必须是

23
2318

如果我们列出所有 10 以下的自然数,它们是 3 或 5 的倍数,那么这些倍数的和就是 23。

最佳答案

选项 1

您正在尝试对给定数字下所有 3 或 5 的倍数求和。您是否考虑过如何在没有 for 循环的情况下做到这一点?咱们试试吧。嗯,“3 或 5”需要考虑很多。让我们简化它,并尝试对所有 99 以下的 3 的倍数求和:

3+6+9+12+15+...+99

如何优化这个加法以避免 for 循环? (在继续阅读之前这样做)

现在,如果您知道如何对给定 n 下的所有 3 的倍数求和,这是否为您提供了对给定 n 下 3 5 的所有倍数求和的方法?嗯,序列 3,6,9,12,15,...,n 和 5,10,15...,n 之间有什么重叠?也许如果你可以对 n 下的 3 的倍数求和,对 n 下的 5 的倍数求和,那么你就可以摆脱 overlap

选项 2

好吧,假设我知道数字 n 下 3 或 5 的倍数之和。这能帮助我求出数字 n+1 下 3 或 5 的倍数之和吗?也许我知道 calc(n) 在 calc(n-1) 方面是什么。如果我能做到,那就太好了,因为我可以不重新计算 calc(n-1),而是 save calc(n-1) 代替。如果只是...

关于c - 有效地添加可被 3 或 5 整除的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51639476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com