问题标题: 酷町堂:2750

0
0
已解决
高舒豪
高舒豪
中级光能
中级光能

求和经验值:100

瑶海区2016年信息学竞赛试题

不许抄袭,一旦发现,直接清空经验!

题目描述 Description

最近合肥下了好多天雨,周末班主任组织班级同学们去欢乐谷游玩,大家都很开心,同学们玩了好多东西,大家都很疲劳了,在这个时候,小明和同学们看到了一个开启智慧之门游戏。小明和同学决定去看看究竟。欢迎同学来到智慧之门,来这里得同学需要一定得智慧,才能参观游玩,智慧之门门主提出了一个问题,只有回答出来得同学才能参观游玩下一个节目,智慧之门门主首先提出了一个数学问题给你一个正整数10,求1到10之间所有的5的倍数之和。小明快速得到答案15,这时候智慧之门门主说,如果给你任意一个正整数是N(N≤10^10),求1到N之间所有的5的倍数之和,这个时候大家都在思考中,小明得意的笑了,因为他是信息学爱好者,可以编程实现。

输入描述 Input Description

输入只有一行,正整数N

输出描述 Output Description

输出只有一行,1到N之间所有的5的倍数之和S

样例输入 Sample Input

10

样例输出 Sample Output

15(因为1~10之间只有5和10是5的倍数)

#include<bits/stdc++.h>
using namespace std;
int main(){
    long long n;
    long long sum=0;
    cin>>n;
    for(long long i=1;i<=n;i++){
        if(i%5==0){
            sum+=i;
        }
    }
    cout<<sum;
    return 0;
}

超时帖子也看不懂


0
已采纳
潘孝宇
潘孝宇
初级光能
初级光能

循环完全可以改为i从5到n,每次i+=5

每次循环直接sum+=i;

这样时间复杂度直接降到O(N/5),可以AC。

潘孝宇在2021-04-05 11:43:55追加了内容

循环开头

for(int i=5;i<=n;i+=5)

 

0
我要回答