[蓝桥杯 2023 国 B] 双子数

2024-04-07 07:12
文章标签 2023 蓝桥 双子

本文主要是介绍[蓝桥杯 2023 国 B] 双子数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[蓝桥杯 2023 国 B] 双子数

B 双子数

若一个正整数 x x x 可以被表示为 p 2 × q 2 p^2 \times q^2 p2×q2,其中 p p p q q q 为质数且 p ≠ q p \neq q p=q,则 x x x
一个 “双子数”。请计算区间 [ 2333 , 23333333333333 ] [2333, 23333333333333] [2333,23333333333333] 内有多少个 “双子数”?

输入格式

输入一个大写字母,表示第几个问题。

输出格式

根据所输入的问题编号,输出对应问题的答案。

答案:
947293

知识点1:
判断素数(欧式筛选)

//1.定义最大上限
const int n=10000010;
//2.定义判断素数数组,1:不是素数 0:是素数
bool f[n]={1,1};//0,1不素数
//3.定义动态数组:储存素数
vector<int> v;
//4.找素数
for(int i=2;i<=n;i++) //第一次循环枚举 2~n的数{if(f[i]!=1) // 如果是素数,放进数组里面v.push_back(i);for(int j=0;j<v.size()&&i*v[j]<=n;j++)//i*v[j] 不能超过上限/*j是枚举现在找到的素数,假如有一个素数是a,我们要标记的是 2*a,3*a,4*a,5*a一定不是素数而前面的系数就是我们枚举的i,素数就是遍历数组得到的v[j]i*v[j] 标记的合数 	  */{f[i*v[j]]=1;if(i%v[j]==0)break; //120=2*3*20 //有两个质因子 2,3 我们仅仅需要标记最小的那个 如果能被整除 就跳出循环  }}

埃式筛选:

//埃氏筛法
int n=1e5;
bool shai[n];
//vector<int >shai;
int cun[n];
signed main()
{int cnt = 0;//如果你用的是vector,则进行注释部分操作//shai.push_back(1), shai.push_back(1);//在0,1两个位置先添加。0,1都不是素数所以都添1。//for (int i = 2; i <= n; i++)//{//    shai.push_back(0);//}for (int i = 2; i <= n; i++){if (!shai[i])//如果没有被标记{cun[cnt++] = i;for (int j = 2; j <= n; j++){if (i * j > n)break;//超过数据大小就退掉。shai[i * j] = 1;//1标记的都是素数的倍数——所以不是素数。}}}for (int i = 0; i < cnt; i++){printf("%d ", cun[i]);}
}

欧式筛选和埃式筛选

代码:

#include <bits/stdc++.h>
#define int __int128 //用__int128稳一点 
using namespace std;long long ans=0;
const int n=10000010;
bool f[10000010]={1,1}; //标记
vector<int> v;
signed main(){for(int i=2;i<=n;i++){if(f[i]!=1)  v.push_back(i);for(int j=0;j<v.size()&&v[j]*i<=n;j++){f[v[j]*i]=1;if(i%v[j]==0)break;}}
for(int i=0;i<v.size();i++)for(int j=i+1;j<v.size();j++){if(v[i]*v[i]*v[j]*v[j]<2333)continue;else  if(v[i]*v[i]*v[j]*v[j]>23333333333333)break;ans++;}cout<<ans<<endl; 
} 

疑惑一:

我重命名 int为long long 结果错误

错误答案:947303 而题解定义为__int128:答案正确

这篇关于[蓝桥杯 2023 国 B] 双子数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/881958

相关文章

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

HNU-2023电路与电子学-实验3

写在前面: 一、实验目的 1.了解简易模型机的内部结构和工作原理。 2.分析模型机的功能,设计 8 重 3-1 多路复用器。 3.分析模型机的功能,设计 8 重 2-1 多路复用器。 4.分析模型机的工作原理,设计模型机控制信号产生逻辑。 二、实验内容 1.用 VERILOG 语言设计模型机的 8 重 3-1 多路复用器; 2.用 VERILOG 语言设计模型机的 8 重 2-1 多

C语言蓝桥杯

一、语言基础 竞赛常用库函数 最值查询 min_element和max_element在vector(迭代器的使用) nth_element函数的使用 例题lanqiao OJ 497成绩分析 第一种用min_element和max_element函数的写法 第二种用min和max的写法 二分查找 二分查找只能对数组操作 binary_s

2023 CCPC(秦皇岛)现场(第二届环球杯.第 2 阶段:秦皇岛)部分题解

所有题目链接:Dashboard - The 2023 CCPC (Qinhuangdao) Onsite (The 2nd Universal Cup. Stage 9: Qinhuangdao) - Codeforces 中文题面: contest-37054-zh.pdf (codeforces.com) G. Path 链接: Problem - G - Codeforces

找不同-第15届蓝桥省赛Scratch初级组真题第4题

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第183讲。 如果想持续关注Scratch蓝桥真题解读,可以点击《Scratch蓝桥杯历年真题》并订阅合集,查阅教程更方便。 第15届蓝桥杯省赛已于2024年8月24日落下帷幕,编程题一共有5题,分别如下: 猪八戒落地 游乐场 画西瓜 找不同 消

【蓝桥杯嵌入式(一)程序框架和调度器】

蓝桥杯嵌入式(一)程序框架和调度器 序、代码命名规则零、STM32和8051⼀、软件及环境安装⼆、⼯程框架搭建1.时钟配置2、SYS配置3、⼯程配置4、NVIC配置5.、Keil配置 三、系统初始化四、任务调度器 链接: 视频出处 序、代码命名规则 以下是一些常见的举例 零、STM32和8051 链接: 8位和32位单片机最本质区别 ⼀、软件及环境安装

HNU-2023电路与电子学-实验1

写在前面: 这是电路与电子学课程的第一次实验,按照指导书的需求在Multisim软件搭建一个电路传感器模型,难度较小,细心完成就没有问题。 小tips:22级实验是采用上传到测试平台来进行功能检测,如果不通过则会打回修改后再重新提交,(我们那时候的评测系统特别特别慢,一次只能测一个同学,剩下同学就排队等着,久的时候甚至超过10个小时),这里列举一个常见的错误:热噪声有+号这端需要连接有源滤波器

【蓝桥杯嵌入式(二)Led、Key、Lcd】

蓝桥杯嵌入式(二)Led、Key、Lcd 五、Led模块1.原理图配置2. 知识点3.底层代码 六、Key模块1.原理图配置2.知识点3.底层代码底层代码(四⾏代码版本)底层代码(状态机版本) 七、LCD模块1.原理图配置2.知识点底层代码 五、Led模块 1.原理图配置 2. 知识点 链接: 上拉电阻的通俗解释 链接: 单⽚机怎么输出⾼电平!推挽输出和开

【python】—— Python爬虫实战:爬取珠海市2011-2023年天气数据并保存为CSV文件

目录 目标 准备工作 爬取数据的开始时间和结束时间 爬取数据并解析 将数据转换为DataFrame并保存为CSV文件         本文将介绍如何使用Python编写一个简单的爬虫程序,以爬取珠海市2011年至2023年的天气数据,并将这些数据保存为CSV文件。我们将涉及到以下知识点: 使用requests库发送HTTP请求使用lxml库解析HTML文档使用dateti

蓝桥杯:整数删除

// 蓝桥杯整数删除.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include<stdio.h>#define MAX 100void findmin(int a[],int n,int& pos){int min=a[0];pos=0;//pos=0我开始忘了,特别注意