LightOJ1197 - Help Hanzo(区间素数筛 + 模板)

yolo 图像检测、关键点检测单摄像头测量物体尺寸长度大小 new_distance/real_size (待求物体像素距离与实际距离比值)= distance / metric_length (参照物像素距离与实际距离比值)然后运行size_demo进行要测量的物体进行关节点检测距离;metric_length是上面耳机选取的两个点的实际物理距离,大概6cm;这里用的windows。通过关键点检测识别物体关键点的像素距离,然后参考比例尺计算实际距离。2)关键点算法这里用的现有的进行测试,实际场景需要自己训练。这里拿这模型推理出的关键点坐标进行后续长度计算。 阅读详情

题目链接:

https://vjudge.net/problem/LightOJ-1197


题目大意:

给出 a,b 求 [a,b] 内素数个数,保证 b−a<100000 , 1≤a≤b<231 。


解题过程:

这题有点可惜,没仔细想就去翻书了,挑战第二版 P121,当初这里看过了,以为只有一个埃氏筛法然后跳过了,有点可惜…


题目分析:

首先对于任意的 b ,他的最小质因数一定不会大于b√,那么可以用 [2,b√] 的素数表,去筛掉 [a,b] 区间内的倍数,剩下的就是素数了。

然后用了两种差不多的实现。

这题要注意 1 不是素数!!!!!


AC代码一:

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

const int MAX = 100000;
const int MAX_INTERVAL = 200000+100;

vector<int> prime;
bool not_prime[MAX];
bool interval[MAX_INTERVAL];

//先筛出小于等于sqrt(b)的素数
void init() {
    for (int i = 2; i < MAX; i++) {
        if (not_prime[i]) continue;
        prime.push_back(i);
        for (int j = i << 1; j < MAX; j += i)
            not_prime[j] = true;
    }
}

int solve(ll a, ll b) {
    memset(interval, 0, sizeof(interval));
    for (int i = 0; i < prime.size(); i++) {
        if ((ll)prime[i] * prime[i] > b) break;

        //计算起始的位置,区间内第一个prime[i]的倍数
        ll s = (a + prime[i] - 1) / prime[i];
        //如果算出的s是1的话,那么就是这个素数本身,这种情况不应该筛掉
        if (s < 2) s = 2;

        s *= prime[i];
        for (; s <= b; s += prime[i]) {
            interval[s-a] = true;
        }
    }

    //最后统计答案
    int ans = 0;
    for (int i = 0; i <= b - a; i++) {
        if (!interval[i]) ans++;
    }
    return ans;
}

int main() {
    int T;
    init();
    scanf("%d", &T);
    for (int Case = 1; Case <= T; Case++) {
        ll a, b;
        scanf("%lld %lld", &a, &b);
        int ans = solve(a, b);
        if (a == 1) ans--;
        printf("Case %d: %d\n", Case, ans);
    }
}

AC代码二:

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

const int MAX = 100000;
const int MAX_INTERVAL = 200000+100;

//这个是最终答案的区间
bool not_prime[MAX_INTERVAL];
//这个是小于sqrt(b)的区间
bool not_prime_small[MAX];

int solve(ll a, ll b) {
    memset(not_prime, 0, sizeof(not_prime));
    memset(not_prime_small, 0, sizeof(not_prime_small));

    //枚举所有小于等于sqrt(b)的数
    for (int i = 2; (ll) i * i < b; i++) {
        //如果是素数进行下一步
        if (!not_prime_small[i]) {
            //筛掉小区间内的倍数
            for (int j = 2 * i; (ll)j * j < b; j += i) {
                not_prime_small[j] = true;
            }
            //筛掉大区间内的倍数,找起始位置的方法与第一种一样
            for (ll j = max(2LL, (a + i - 1) / i) * i; j <= b; j += i) {
                not_prime[j - a] = true;
            }
        }
    }
    int ans = 0;
    for (int i = 0; i <= b - a; i++) {
        if (!not_prime[i]) ans++;
    }
    return ans;
}

int main() {
    int T;
    scanf("%d", &T);
    for (int Case = 1; Case <= T; Case++) {
        ll a, b;
        scanf("%lld %lld", &a, &b);
        int ans = solve(a, b);
        if (a == 1) ans--;
        printf("Case %d: %d\n", Case, ans);
    }
}
24届数字IC设计/验证秋招总结贴——先看这个 为方便快速进行查找该专栏的内容,将所有内容链接均放在此篇博客中整理不易,欢迎订阅~~ 阅读详情

相关推荐

从零开始:手把手教你用Verilog搭建一个可配置的Cache模块(以Vortex GPGPU为例)

本文详细介绍了如何使用Verilog从零开始搭建一个可配置的Cache模块,以Vortex GPGPU为例。内容涵盖Cache设计基础、模块接口与参数化设计、核心子模块实现、仲裁与一致性机制、功能验证与性能调优等关键环节,适合RTL设计初学者和希望深入理解Cache工作原理的工程师。通过实战指南,读者可以掌握硬件代码分析技巧,提升Cache模块的设计能力。

weixin_42552315的博客 441

Help Hanzo 题解

Amakusa, the evil spiritual leader has captured the beautiful princess Nakururu. The reason behind this is he had a little problem with Hanzo Hattori, the best ninja and the love of Nakururu. After he...

weixin_43154720的博客 280

抖音自定义卡片链接(图文链接)

抖音自定义可以自定义标题,打开链接,和展示图片 效果 主要代码 public void sendMessage(String conversationId, Object aBaseContent) throws Exception { // C233282u5.LIZIZ.LIZ().LIZIZ(LIZ).LIZ(obtain).LIZ(hLn).LIZ((AbstractC59811HHc) new H9Q()); Object HOa = ReflectionUtil

傅恒的博客 4140

Help Hanzo (素数筛+区间枚举)

Help Hanzo 题意:求a~b间素数个数(1 ≤ a ≤ b < 231, b - a ≤ 100000). (全题在文末) 题解: a~b枚举必定TLE,普通打表MLE,真是头疼。。 b - a ≤ 100000 是关键。 类似素数筛的方法: 1.初始化vis[]=0; 2.素数的倍数vis[]=1; 3.b较小时,素数筛解决 ...

weixin_30241919的博客 181

C语言|深入浅出讲解int转换为float全过程(附2017年统考大题案例)

int转换为float类型为什么会发生精度损失? 精度损失的详细过程究竟是什么样的? 什么样情况float会发生精度损失?没有弄懂2017年浮点数统考大题? 这一篇用2017年统考大题案例帮你更深的理解浮点数的存储规则。

DADONGOOO的博客 1万+

UG NX二次开发(C++)-库缺少需要的入口点的原因与解决方案

在UG NX二次开发过程中,有时会遇到形形色色的bug,比如有个读者其采用UG NX二次开发(C++)时,遇到“库缺少需要的入口点”这个问题,看了一下他发给我的源代码,感觉有必要讲一下UG NX二次开发(C++)遇到此类问题的可能情况与解决方法。自然,这是博主的经验之谈,有不足之处还请在评论区讨论。

GimiGimmy 2201

light oj 1197 Help Hanzo

Help Hanzo Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Description Amakusa, the evil spiritual leader has captured the beautiful princess Nakururu. The reason be

wings的博客 384

YOLOv11改进 | Conv/卷积篇 | 轻量化多尺度异构卷积(MSHC)优化YOLOv11精度(全网独家首发)

本文介绍了Hype-YOLO提出的MANet结构,这是C3、C2f、C3k2的升级版,能显著增强特征提取能力。MANet整合了DSConv和C2f结构,通过多分支异构设计提升梯度流动和特征语义深度。文章详细解析了MSHC模块的原理,包括其多尺度并行建模、通道混洗等核心机制,并提供了完整的代码实现和训练教程。实验表明,Hype-YOLO的精度优于YOLOv11。该结构在保持轻量化的同时,通过异构分支设计实现了更丰富的特征表达,适用于目标检测等视觉任务。

Snu77的博客 949

Help Hanzo(LightOJ - 1197)(欧拉筛 + 思维)

LightOJ - 1197 Help Hanzo 来源:LightOJ - 1197 Help Hanzo 题意: 判断a ~ b区间内,有多少个素数,a,b范围[1, 2 ^ 31 - 1],b - a <= 1e5 思路: 这个题巧妙就巧妙在区间长度上,为1e5,而a,b最大范围为INT_MAX,所以可以先筛出来sqrt(INT_MAX) 以内的素数,约为50000,通过这些素数去标记[a, b]范围内的素数,通过 埃氏筛的方法(O(nloglogn)),将每一个素数增加,每次增加其本身的

ocean__ocean的博客 286

安全与加密常识(10)linux系统证书管理

1. 将自定义CA证书(如my-ca.crt)放到源目录# 2. 编辑配置文件,启用该证书(末尾添加一行 my-ca.crt)# 3. 执行命令同步(核心工作环节)# 4. 验证结果:检查是否生成哈希链接和合并到证书束ls /etc/ssl/certs/my-ca.pem # 证书文件ls /etc/ssl/certs/$(openssl x509 -hash -noout -in /usr/share/ca-certificates/my-ca.crt).0 # 哈希链接。

二进制君 283

华为OD机试真题 新系统【查找能被整除的最大整数】

华为OD新系统机试真题【查找能被整除的最大整数】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【查找能被整除的最大整数】

qq_45776114的博客 672

【代码超详解】LightOJ 1197 Help Hanzo(区间质数筛法)

一、题目描述 二、算法分析说明与代码编写指导 对于求指定区间 [a, b] 的质数的题目,通常 a 和 b 都比较大,而 b - a 不太大。 采用埃氏筛或者欧拉筛的代码,一般都会同时给出前若干个质数。如果有 m 个不超过 n 的数要判断是否为质数,最坏情况下的时间复杂度为 π(n) 为不大于 n 正整数中的质数数量。 在本例中,可以代入最坏情况 m = 100001,n = 2^31,得数据...

COFACTOR 462

实战落地!Python抓取股票历史数据:开盘/收盘/成交量全维度爬取(附数据清洗+可视化)

股票历史数据抓取的核心是“数据准确性+完整性”,网页爬取适合小批量、个性化需求,API调用适合批量、标准化需求。多市场数据抓取:适配港股(00700.HK)、美股(AAPL)的抓取逻辑;高频数据抓取:抓取分钟级、小时级行情数据,用于短线量化策略;财务数据扩展:抓取市盈率、市净率、净利润等财务指标,结合价格数据做基本面分析;量化策略回测:将清洗后的数据接入Backtrader、VNPY等量化框架,验证策略有效性。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1740

Help Hanzo LightOJ - 1197 区间素数筛

问题: Amakusa, the evil spiritual leader has captured the beautiful princess Nakururu. The reason behind this is he had a little problem with Hanzo Hattori, the best ninja and the love of Nakururu. Aft...

HXX904的博客 374

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

LightOJ 1197 Help Hanzo

思路:大区间素数筛 筛法用的kuangbin的模板#include <cstdio> #include <algorithm> #include <iostream> #include <cstring> using namespace std; typedef long long ll; const int MAXN=1000010; int prime[MAXN+1]; void getPri

梦幻的蔷薇色 383

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Help Hanzo LightOJ - 1197(区间筛素数模板题)

Help Hanzo LightOJ - 1197 Amakusa, the evil spiritual leader has captured the beautiful princess Nakururu. The reason behind this is he had a little problem with Hanzo Hattori, the best ninja and the...

codeswarrior的博客 254

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Help Hanzo LightOJ - 1197

问题: Amakusa, the evil spiritual leader has captured the beautiful princess Nakururu. The reason behind this is he had a little problem with Hanzo Hattori, the best ninja and the love of Nakururu. Aft...

lxxdong的博客 290

Help Hanzo 素数打表进阶(大数据区间打表)

题意:求a~b之间的素数;(1 难点:数据太大,素数打表会TLE,枚举会MLE; 解题关键:b-a 方法:素数打表小部分(1e6),然后用已打表素数去拓展所给区间的素数,用v[j-a](a #include #include #include #include using namespace std; typedef long long ll; const int N=1e6+5; int

Big_Rui的博客 729

Help Hanzo

Help Hanzo Amakusa, the evil spiritual leader has captured the beautiful princess Nakururu. The reason behind this is he had a little problem with Hanzo Hattori, the best ninja and the love of Nakurur...

rg_lzm的博客 319

Help Hanzo(素数筛)

题意:本题就是求l~u之间有多少个素数; 分析:因为题数很大,所以不能用正常的素数筛法,只能先筛一部分,在用这些素数再筛出l~u之间的素数。本题和另一道题目很相似(传送门); 另一道题题目链接:http://poj.org/problem?id=2689; 由于不是很难,我就不赘述怎么进行素数筛,详情请见博客:http://blog.youkuaiyun.com/qq_27599517/article/

北门的智慧 873

LightOJ-1197 Help Hanzo(区间筛板子题)

Help Hanzo Amakusa, the evil spiritual leader has captured the beautiful princess Nakururu. The reason behind this is he had a little problem with Hanzo Hattori, the best ninja and the love of Nakururu. After hearing the news Hanzo got extremely angry. But

qq_43461168的博客 358

数学-B Help Hanzo (LightOJ - 1197 )

暴力筛TLE直接开数组MLE#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;string.h&gt; using namespace std; int vis[100010]; long long sushu[100010]; int shai[100010]; int main() { long long n...

Du_Ra_Ra_Ra的博客 374

数论——区间筛质数

关于质数部分的扩充讲解

qq_57150526的博客 1035

素数的区间筛法

区间筛法

m0_72542983的博客 862

求某区间内所有素数的算法(简单到进阶)

求某区间内所有素数的算法(简单到进阶) 一、寻找素数 1、暴力求解。时间复杂度:n根号n 枚举每个数,判断是否有正整数能整除这个数。 for(int i=2;i<n;i++) { int flag=0; for(int j=2;j*j<=i;j++) { if(i%j==0) { flag=1; break; } } if(flag==0) a[k++]=i;/

weixin_44996090的博客 6234

求区间素数,并求素数和。

求1≤I≤J≤500区间中,任意区间(I,J)的素数,以及素数和。 什么是素数?只能被1和本身的数整除的数称为素数。 需求分析 1.选定区间 2.求出这个区间的素数 3.求素数和 选定区间 首先,需要读入i,j的值,寻找素数的区间,如果i>j,则需要将i 与 j 的值对调,方便后面循环语句的进行。 话不多说,下代码。 int i, j; scanf_s("%d %d", &i, &j); int t; if (i > j) { .

Angle__smile的博客 2243
上一篇: LightOJ1214 - Large Division(高精度取模 + 模板)
ACM_Fish
博客等级 码龄10年 69粉丝 76原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值