XTUOJ 1140 Anti-Goldbach's Conjecture(数论)

本文回顾了一次程序设计比赛经历,通过分析一道关于筛选法的题目,总结了筛选法的具体应用及优化技巧,并分享了从失败到成功的调试过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


昨天晚上我们进行了第一次小组赛,做的是12年的湘潭市比赛的题,我们队只ac了两个题,做这次题的时候,感觉是挺简单的,我们就开始着手做,提交了好几次都是TLE,后面就基本一直在搞这个题,对这个题进行优化,一直到最后,我们还是没能ac。。程序的优化真的很重要啊,特别是比赛的时候,在选对算法后,还要对算法进行一定的优化,在一次一次的优化后,找到更加好的方法,这才是算法的魅力所在吧。今天早上在网上搜了一下其他大神的代码,仔细看了一下,其实思路和我们都差不多,有好多的细节的地方我们都没有处理好,看别人优化后的代码,提交了一下,才100多ms;参考了一下这篇博客http://blog.csdn.net/talak/article/details/7603432

开始我们想到的也是要打表,用筛选法,筛选法还是要基于题目进行优化啊!!

#include <stdio.h>
#define N 1000002
long long prime[N]={0};
long long count[N]={0};
int main()
{
    long long n,len=0;
    for(int i=2;i<=N/2;i++)  //这里就是对筛选法的优化,对于这个题目,我们选出奇合数就行了,(奇数=奇数+偶数)
      {
        for(int j=i+i;j<=N;j+=i)
          {
           if(j%2==1)
              prime[j]=1;
          }
      }
      for(int i=9;i<=N;i++) //题目要求n>=13,所以要从n-4的奇数开始(从9开始)
      {
          if(prime[i])
            len++;
          count[i+4]=len; //这个地方,我们要从4开始(满足题意,最少的偶合数是4)
      }
    while(scanf("%I64d",&n)!=EOF)
    {
        long long sum=0;
        for(int i=13;i<=n;i=i+2)//这里直接按照奇数输出,偶数就直接是前面一个奇数的值;
           sum+=count[i];
        printf("%I64d\n",sum);
    }
    return 0;
}

这里还要注意的是,不知道是湘大的系统问题还是其他问题,感觉湘大判题对lld有问题,开始这里输入输出用的是lld,提交上去是wa,后面改成I64d就ac了,这里以后还是要注意,感觉好像用I64d比lld要快那么一点,以后就用I64d吧,还有比赛的时候可能那个头文件也会出现错误,我平时都用的<>,好像比赛的时候用“”的范围更大,这个也还是注意一下吧。







修改说明: 1、加入中文语言包,修正显示字体大小不一的缺点,显示为微软雅黑字体, 2、修改网页背景色为灰色(护眼), 3、修改UA为诺基亚5800W,下载无限制, 4、修改为完全绿色版,不会在其它盘生成文件夹, 5、修改快速拨号为5X8, 6、添加几个按钮 (1)、菜单按钮,点下后就剩标签栏,其它菜单栏跟标题栏隐藏掉, (2)、删除私人数据, (3)、皮肤, (4)、关闭的标签(这个原版本就有的), (5)、隐藏到系统托盘, (6)、转到(这个不用说了吧,应该知道什么功能吧,对有些习惯用回车键的人有可能是多余的,就在地址栏旁边,多个选择也不错吧,不喜欢可以自己删除) (7)、我的按钮(这个在右下角)可以自己定义我的按钮, (8)、还有就是在工具栏加入了一个搜索引擎,多一个搜索的选择,不喜欢可以自己删了 下面是官网更新说明 重要更新: 修復 Gmail 高 CPU 佔用的問題 修復一些 flash 相關崩潰問題 鼠標手勢 修復僅應用程序級別的手勢有效的問題 修復右鍵+滾輪不顯示可視化提示的問題 修復右鍵點擊 flash 出現可視化提示的問題 修復同時出現多個可視化提示的問題 修復執行鼠標手勢時崩潰的問題 修復可視化提示中的文本缺少本地化的問題 修復標籤切換順序不正常的問題 修復一些地址欄顯示問題 修复一些扩展问题 修復一些內核問題
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值