博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces 385 C Bear and Prime Numbers
阅读量:5999 次
发布时间:2019-06-20

本文共 1230 字,大约阅读时间需要 4 分钟。

做题感悟:这题属于想法题,比赛时直接做的 D 题。可是处理坐标处理的头晕眼花的结果到最后也没AC。

解题思路:

               由于查询的时候仅仅考虑素数,so~我们仅仅考虑素数就能够,这就须要筛素数。我们能够在筛素数的同一时候把某个素数出现的倍数加上。输入的时候仅仅要记录某个数的个数就能够了。

代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std ;#define INT long long intconst int INF = 0x3f3f3f ;const double esp = 0.0000000001 ;const double PI = acos(-1.0) ;const int mod = 1000000007 ;const int MY = 100 + 5 ;const int MX = 10000000 + 5 ;int Max ,n ,m ;bool isprime[MX] ;int sum[MX] ,num[MX] ;void init() // 筛法同一时候记录个数{ memset(isprime ,false ,sizeof(isprime)) ; memset(sum ,0 ,sizeof(sum)) ; for(int i = 2 ;i <= Max ; ++i) { sum[i] += sum[i-1] ; if(!isprime[i]) { sum[i] += num[i] ; for(int j = i + i ;j <= Max ; j += i) { sum[i] += num[j] ; isprime[j] = true ; } } }}int main(){ int x ; while(~scanf("%d" ,&n)) { memset(num ,0 ,sizeof(num)) ; Max = 0 ; for(int i = 0 ;i < n ; ++i) { scanf("%d" ,&x) ; num[x]++ ; // 记录个数 Max = max(Max ,x) ; } init() ; scanf("%d" ,&m) ; int le ,rt ; for(int i = 0 ;i < m ; ++i) { scanf("%d%d" ,&le ,&rt) ; if(rt > Max) rt = Max ; if(le > Max) cout<<"0"<

转载地址:http://wzzmx.baihongyu.com/

你可能感兴趣的文章
高通Android camera运行流程【转】
查看>>
thinkPHP 上传文件的中文乱码
查看>>
C#编程(六十六)----------表达式树总结
查看>>
MySQL InnoDB的存储结构总结
查看>>
Android解析ActivityManagerService(一)AMS启动流程和AMS家族
查看>>
Linux上磁盘挂载
查看>>
easyui 只刷新当前页面的数据 datagrid reload 方法
查看>>
PLSA-概率潜语义分析(二)
查看>>
Java反射机制在Spring IOC中的应用
查看>>
使用POI 读取 Excel 文件,读取手机号码 变成 1.3471022771E10
查看>>
IOS-UITableView入门(3)
查看>>
JavaScript -- 标签 , Break 和 Continue 语句
查看>>
jquery面向对象写法
查看>>
YTUOJ-推断字符串是否为回文
查看>>
在Mac OS X中部署Tomcat的经验
查看>>
[ExtJS5学习笔记]第八节 Extjs5的Ext.toolbar.Toolbar工具条组件及其应用
查看>>
超时设置或默认参数 专题
查看>>
动态配置 JBOSS ( eap 6.2 ) 数据源
查看>>
揭秘传智播客班级毕业薪资超7k的内幕系列之四----汽车工的华丽转身
查看>>
5行代码实现一致性哈希
查看>>