问题标题: 酷町堂:瑶海区2016年信息学竞赛试题 2705 历代BOSS 70分

0
0
已解决
徐烨奎
徐烨奎
新手光能
新手光能
#include<iostream>    //包含头文件 
using namespace std;    //适用标准命名空间 
int main()              //主函数 
{
    long long N,s=0;
    cin>>N;
    for(int i=1;i<=N;i++){
        if(i%5==0){
        s+=i;
        }
    }
    cout<<s;
    return 0;            
} 

Time Limit Exceeded!Time Limit Exceeded!Time Limit Exceeded!Time Limit Exceeded!Time Limit Exceeded!超时


0
已采纳
赵逸凡
赵逸凡
初级启示者
初级启示者

等会搞错了,这道题是5的倍数之和,所以sum最后要乘5

@徐烨奎 

 

赵逸凡在2019-08-23 11:45:15追加了内容

不对,是sum在i的循环里面,要sum+=i

0
赵逸凡
赵逸凡
初级启示者
初级启示者

题号没有错吗?

我是用结构体写的

赵逸凡在2019-08-23 11:17:11追加了内容
#pragma GCC optimize(3)
#pragma GCC target("avx")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")

这是加速头文件,可以优化时间复杂度。

题目说是1到n的5的倍数,所以i要从4开始,正在优化,等会儿

赵逸凡在2019-08-23 11:28:31追加了内容

推荐一种方法---艾氏筛法

比如说,N=10时,i第一次遍历 

次数 1 2 3 4 5 ...N-4+1=N-3
i的值4 5 6 7 8 ...N
解:设当n=10时
次数 1 2 3 4 5 6 7
i的值4 5 6 7 8 9 10
那么循环写成
for(int i=4;i<=n-3;i++)
当然i从5开始也可以,但n要改值
前面加特判
if(n<=4)
{
    cout<<0;
    return 0;
}
其实上述方法应该没啥用
后来我们发现,我们可以优化算法
比如N=11
while(N>4)
{
    if(!N%5)//这里!N%5与N%5==0是等价的,作者太懒了
    {//if语句判断N是否是5的倍数,这有妙用
      break;
    }
}
int sum=0;
for(int i=5;i<=N;i+=5)
{
//这时候统计有几个i就可以了
sum++;
}

望caina谢谢

0
赵逸凡
赵逸凡
初级启示者
初级启示者

是这道题吗?

赵逸凡在2019-08-23 11:44:46追加了内容

@徐烨奎 @徐烨奎

 

0
0
0
我要回答