这道题一开始本着很朴素的想法就是先输入两头的数据,然后对每组的数据范围下测试中间的数据即可,但是是超时的。原因也很明显,比如计算1~1000的数据之后,假如下一组数据是1~1001,本来只需要多测试下1001是否符合再加上前面的结果(1~1000)即可,而这种做法需要重复计算。

能够ac的处理方式是打表。就是分别计算1~n (n的范围是1~1000005) 中符合题设要求的数有多少,然后记录在data[n]中。在具体操作时,每步只增加1,然后增加的这个数字是否符合,然后将结果和前一位的结果相加即可。

代码:

 #include<stdio.h> 

 struct dataxy{
int x;//普通愤怒
int y;//特别愤怒
}a[]; int main(){
int i,j,k=;
//普通愤怒最早从125开始,特别愤怒最早从521开始
//打表,将125到1000000中的数据全部测试一遍,本次打表还有点动态规划的意味,因为
//计算0~x只需要测试x本身就好了,如果x本身是包含1/2/5的那就 a[x] = a[x-1] +1 ,否则就是a[x]=a[x-1]
//对于数512是同理
for(i=; i<; i++){
int c[]={};
if(i%==||i%/==||i%/==||i%/==||i%/==||i%/==)
c[]=;
if(i%==||i%/==||i%/==||i%/==||i%/==||i%/==)
c[]=;
if(i%==||i%/==||i%/==||i%/==||i%/==||i%/==)
c[]=;
if(c[]&&c[]&&c[]) a[i].x=a[i-].x+;
else a[i].x=a[i-].x; if(i%==||i%/==||i%/==||i%/==) a[i].y=a[i-].y+;
else a[i].y=a[i-].y;
} while(scanf("%d %d",&i,&j)!=EOF){
k++;
printf("Case %d:%d %d\n",k,a[j].x-a[i-].x,a[j].y-a[i-].y);
}
return ;
}

  看完这个题,让我想起了另一个能够打表处理的问题:找素数。  比如找出1~n(n的范围是1~1000005)之间的素数。题目和上面类似,也是圈定1~n之间的数符合某种规则,然后可能的提问方式是“输出某个区间内符合条件的值”,“在某个区间内符合条件的值有多少个”......处理的方式的第一步都是找到这些数。而打表的方法让OJ多个测试案例无需重复计算,而利用 [1,n-1]来计算[1,n]中符合的数的方法(在找素数中就是利用之前找到的素数来筛掉后面的合数),也减少了计算量。

这里贴一个找输出1~n之间素数的筛法的代码:

 #include <iostream>
#include <cstring>
using namespace std; //筛法求素数
#define N 100000
int valid[N],primers[N];
int count=; void GenPrimer(int n){ //参数n代表找出n以内的所有素数
int i,j,k;
for(i=;i<=n;i++){ //初始化,将valid[n]的值赋为1
valid[i]=true;
} for(i=;i*i<=n;i++){ //从2~sqrt(n) 进行筛选
if(valid[i]){ //从(valid[i] ) 素数i开始
for(j=i*i;j<=n;j+=i){ //从i^2开始,之前搜过的不再重复;将i*i、i*(i+1)、i*(i+2)、i*(i+3)...统统筛掉
valid[j]=false;
}
}
} for(i=;i<=n;i++){
if(valid[i]){
primers[count++]=i;
}
}
} int main(){
memset(primers,-,sizeof(primers));//初始化
GenPrimer(); //找出7000以内的所有素数。 for(int i=;i<count;i++){
cout<<primers[i]<<" ";
if((i+)%==) cout<<endl;
}
}

NYOJ 975的更多相关文章

  1. nyoj 975 关于521

    关于521 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 Acm队的流年对数学的研究不是很透彻,但是固执的他还是想一头扎进去. 浏览网页的流年忽然看到了网上有人用玫 ...

  2. nyoj 975 Distinct Count

    Distinct Count 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 给一个长度为 n 的数列 {an} ,找出有多少个长度为 m 的区间,使区间中不含有重复的数 ...

  3. NYOJ 1007

    在博客NYOJ 998 中已经写过计算欧拉函数的三种方法,这里不再赘述. 本题也是对欧拉函数的应用的考查,不过考查了另外一个数论基本定理:如何用欧拉函数求小于n且与n互质所有的正整数的和. 记eule ...

  4. NYOJ 998

    这道题是欧拉函数的使用,这里简要介绍下欧拉函数. 欧拉函数定义为:对于正整数n,欧拉函数是指不超过n且与n互质的正整数的个数. 欧拉函数的性质:1.设n = p1a1p2a2p3a3p4a4...pk ...

  5. NYOJ 333

    http://www.cppblog.com/RyanWang/archive/2009/07/19/90512.aspx?opt=admin 欧拉函数 E(x)表示比x小的且与x互质的正整数的个数. ...

  6. NYOJ 99单词拼接(有向图的欧拉(回)路)

    /* NYOJ 99单词拼接: 思路:欧拉回路或者欧拉路的搜索! 注意:是有向图的!不要当成无向图,否则在在搜索之前的判断中因为判断有无导致不必要的搜索,以致TLE! 有向图的欧拉路:abs(In[i ...

  7. nyoj 10 skiing 搜索+动归

    整整两天了,都打不开网页,是不是我提交的次数太多了? nyoj 10: #include<stdio.h> #include<string.h> ][],b[][]; int ...

  8. NYOJ题目769乘数密码

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsQAAAJYCAIAAADqk2fsAAAgAElEQVR4nO3dPVLrytbG8XcS5AyEWA

  9. 简答哈希实现 (nyoj 138 找球号2)

    例题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=138 代码目的:复习哈希用 代码实现: #include "stdio.h&qu ...

随机推荐

  1. 【深入浅出jQuery】源码浅析--整体架构

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

  2. 跟我一起云计算(5)——Shards

    什么是sharding Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库 (server)上,从而缓解单一数据库的性能问题.不太严格的讲,对于海量数据的数据库,如果是因为表多而 ...

  3. java head space/ java.lang.OutOfMemoryError: Java heap space内存溢出

    上一篇JMX/JConsole调试本地还可以在centos6.5 服务器上进行监控有个问题端口只开放22那么设置的9998端口 你怎么都连不上怎么监控?(如果大神知道还望指点,个人见解) 线上项目出现 ...

  4. 步入angularjs directive(指令)--准备工作熟悉hasOwnProperty

    在讲解directive之前,先做一下准备工作,为何要这样呢? 因为我们不是简单的说说directive怎么用,还要知道为什么这么用!(今天我们先磨磨刀!). 首先我们讲讲js 基础的知识--hasO ...

  5. Spring中Bean的作用域、生命周期

                                   Bean的作用域.生命周期 Bean的作用域 Spring 3中为Bean定义了5中作用域,分别为singleton(单例).protot ...

  6. Asp.net Core 初探(发布和部署Linux)

    前言 俗话说三天不学习,赶不上刘少奇.Asp.net Core更新这么长时间一直观望,周末帝都小雨,宅在家看了下Core Web App,顺便搭建了个HelloWorld环境来尝尝鲜,第一次看到.Ne ...

  7. 基于SignalR的消息推送与二维码描登录实现

    1 概要说明 使用微信扫描登录相信大家都不会陌生吧,二维码与手机结合产生了不同应用场景,基于二维码的应用更是比较广泛.为了满足ios.android客户端与web短信平台的结合,特开发了基于Singl ...

  8. git &github 快速入门

    本节内容 github介绍 安装 仓库创建& 提交代码 代码回滚 工作区和暂存区 撤销修改 删除操作 远程仓库 分支管理 多人协作 github使用 忽略特殊文件.gitignore 1.gi ...

  9. BZOJ 1006 【HNOI2008】 神奇的国度

    题目链接:神奇的国度 一篇论文题--神奇的弦图,神奇的MCS-- 感觉我没有什么需要多说的,这里简单介绍一下MCS: 我们给每个点记录一个权值,从后往前依次确定完美消除序列中的点,每次选择权值最大的一 ...

  10. 在jexus下如何简单的配置多站点

    参考:linuxdot.net 其实jexus的配置还是比较简单的,目录即站点(一个目录就是一个站点,一个配置文件就是一个站点) 如uustudy.net,在siteconf目录下创建一个uustud ...