2018ICPC南京赛区网络赛J Sum(素数筛+找规律)

素数筛链接:https://blog.csdn.net/dl962454/article/details/76595623

【题意】

f(i):能拆成两个数的乘积,并且这两个数要求没有平方因子,并且两个数的位置互换算两种方案。

最后求f(1)+f(2)+f(3)+...f(n)。

 

【解题思路】

还是对欧拉筛的理解不够透彻,比赛的时候一直是筛完素数再去求解f(i),其实是可以一边筛一边求解的。

不难发现,当i是素数时,f(i)=2,当i有3个及以上相同因子时,f(i)=0(比如2*2*2*3不可能组合成两个都没有平方因子的数),当i没有相同因子(假设因子数为n)时,f(i)=2^n(比如2*3*5是8个),当i有两个相同因子(假设有p对相同因子,n个不同因子)时,f(i)=2^n/2^p(比如2*2*3*3*5是2个)。

那么最后总结起来再用个欧拉筛就是这样的。

对于素数d:f(d)=2

当d|p时,若d|p^2,则f(d*p)=0,否则f(d*p)=f(d)/2

反之,则f(d*p)=2*f(d)

 

【代码】

 

#include <iostream>
#include <cstring>
#include <cstdio>using namespace std;const int maxn=2e7+10;//1int prime[maxn];
int vis[maxn];
long long f[maxn],ans[maxn];void isprime()
{int idx=0;f[1]=1;memset(vis,0,sizeof(vis));for(int i=2;i<maxn;i++){if(!vis[i]){prime[idx++]=i;f[i]=2;}for(int j=0;j<idx&&prime[j]*i<maxn;j++){vis[i*prime[j]]=1;if(i%prime[j]==0){if(i%(prime[j]*prime[j])==0){f[i*prime[j]]=0;}else f[i*prime[j]]=f[i]/2;break;}else f[i*prime[j]]=f[i]*2;}}for(int i=1;i<maxn;i++){ans[i]=ans[i-1]+f[i];}
}int main()
{ios::sync_with_stdio(false);cin.tie(0);int T,n;isprime();scanf("%d",&T);while(T--){scanf("%d",&n);printf("%lld\n",ans[n]);}return 0;
}

 

转载于:https://www.cnblogs.com/Fy1999/p/9601175.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue --- 使用vue-router获取带参数的路由

希望的效果如下: 2个路由: 点击如下 步骤. 使用 router-link 来指定路由路径在router.js中指定 路径的 事件处理函数(对应的组件)创建对应的组件 router-link 找到一个区别各个列表的属性(id),将其作为参数传递到路由中to是vue-router中用来绑定路由的属性由于需要进行计…

.Net Core2.*学习手册

1.net core 基础知识解析(创建一个.net core网站)(视频录制) 1.1 Startup解析(没写)   1.2 目录结构分析(没写)   1.3 使用静态文件(没写)   1.4 Controller(没写)   1.5 Razor页面(没写) 1.6.net core appsetting/获取配置文件   2.创建.net core项目 2.1 创建一个项…

java中static详解

这个博主写的总结很好,这里附上链接http://www.cnblogs.com/dolphin0520/p/3799052.html 下面进行简要总结: 在《Java编程思想》P86页有这样一段话&#xff1a; “static方法就是没有this的方法。在static方法内部不能调用非静态方法&#xff0c;反过来是可以的。而且可以在没有…

vue --- 全局注册子组件,并导入全局的子组件

假设: 需要一个评论的模块comment由于comment在多个页面中可能会复用.于是创建一个comment.vue 步骤: 创建comment.vue在需要引用的位置使import comment from ../subcomponent/Comment.vue 导入子组件在Vue实例中使用components属性注册注册的规则: “comment-box” : comm…

7. 反转整数

7. 反转整数 描述 给定一个 32 位有符号整数&#xff0c;将整数中的数字进行反转。 示例 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储 32 位有符号整数&#xff0c;其数值范围是 [−2^31, 2^31 − 1]…

小朋友学C++(1)

Hello World! 在学C之前&#xff0c;最好先学习一下C语言 让我们先运行一段简单的代码&#xff0c;编译器可以使用 在线C编译器 或 Xcode(苹果系统) 或Dev C&#xff08;Windows系统&#xff09;。 #include <iostream> using namespace std; int main() { cout <<…

mysql_表_操作

1、创建表 # 基本语法&#xff1a; create table 表名(列名 类型 是否可以为空 默认值 自增 主键&#xff0c;列名 类型 是否可以为空 )ENGINEInnoDB DEFAULT CHARSETutf8not null # 不可以为空 default 1 # 默认值为1 auto_increment # 自增 primary …

css --- 手机端,留言模块的样式

效果如下: 代码: 说明:用到了mint-ui,需要先安装mt-button的导入: import { Button } from ‘mint-ui’mt-button的使用: Vue.component(Button.name, Button)更多 http://mint-ui.github.io/ // comment.vue <template><div class"comment-container">…

yii多表查询--学习随笔

今天自己做一个小demo&#xff0c;为了不要冗余字段&#xff0c;需要进行多表联合查询、搜索 yii中&#xff0c;用model来映射数据库&#xff08;其实好多框架都是这么搞的&#xff09;&#xff0c;一个模型类通常有一个search模型类跟着一起 废话不多说了&#xff0c;首先&…

node --- 创建一个Socket服务器

流程: 会开发一个监听文件改变的应用然后客户端使用命令行工具(telnet)连接服务端服务端在监听到文件变化后,会发送数据给客户端 监听文件变化 node 的fs模块:watch方法用于监听文件的变化,可以在内存分配一个区域,来专门用于监听文件变化,并执行该区域内指定的回调函数 //…

node --- 创建一个Socket客户端连接到服务器

描述: net.createrServer().listen(60300) 监听客户端访问net.connect({ port: 60300 }) 访问服务器 服务器: 一个很简单的监听文件改变的服务器每当监听的文件改变了,将信息通过json的格式传递给连接到的客户端 connection.write // 01、net-watcher.js use strict const …

css --- 圣杯布局

圣杯布局 左右固定宽度,中间自适应div:nth-child(1) section {display: flex;width: 60%;height: 150px;background-color: pink;margin: 0 auto; }section div:nth-child(1) {width: 100px;height: 150px;background-color: red; }section div:nth-child(2) {flex: 1;backgr…

FZU OJ:2230 翻翻棋

Problem 2230 翻翻棋Accept: 872 Submit: 2132Time Limit: 1000 mSec Memory Limit : 32768 KBProblem Description象棋翻翻棋&#xff08;暗棋&#xff09;中双方在4*8的格子中交战&#xff0c;有时候最后会只剩下帅和将。根据暗棋的规则&#xff0c;棋子只能上下左右移…

css --- flex:n的解析

起步 效果如下: 在父元素中,将3个盒子平均分成了3等份代码如下: p span {flex: 1;background-color: lightcoral; }p span:nth-child(even) {border-right: 1px solid black;border-left: 1px solid black; }假设有3个子元素flex:1 的意思是,将剩余的宽度平均分成3份,然后该元…

统一建模语言UML

目录 1. UML定义2. UML结构2.1 视图&#xff08;View&#xff09;2.2 图&#xff08;Diagram&#xff09;2.3 模型元素&#xff08;Model element&#xff09;2.4 通用机制&#xff08;General mechanism&#xff09;3. 类图3.1 类与类图3.2 类之间的关系3.2.1 关联关系3.2.2 聚…

SpringCloud系列七:使用Ribbon实现客户端侧负载均衡

1. 回顾 在前面&#xff0c;已经实现了微服务的注册与发现。启动各个微服务时&#xff0c;Eureka Client会把自己的网络信息注册到Eureka Server上。 但是&#xff0c;在生成环境中&#xff0c;各个微服务都会部署多个实例&#xff0c;因此还行继续进行优化。 2. Ribbon简介 Ri…

python基础:条件循环字符串

while True:a int(input(摄氏度转换为华氏温度请按1\n华氏温度转化为摄氏温度请按2\n))if a 1:celsius float(input(输入摄氏温度&#xff1a;))fahreaheit (celsius 1.8) 32 # f c9/532print({:.2f}摄氏温度转为华氏温度为{:.2f}.format(celsius, fahreaheit))elif a …

从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十二║Vue实战:个人博客第一版(axios+router)...

前言 今天正式开始写代码了&#xff0c;之前铺垫了很多了&#xff0c;包括 6 篇基础文章&#xff0c;一篇正式环境搭建&#xff0c;就是为了今天做准备&#xff0c;想温习的小伙伴可以再看看《Vue 基础入门详细的环境搭建》&#xff0c;内容很多&#xff0c;这里就暂时不复习了…

红帽7 su命令与sudo服务

1、su命令 su命令可以解决切换用户身份的需求&#xff0c;使得当前用户在不退出登录的情况下&#xff0c;顺畅地切换到其他用户&#xff0c;比如从root管理员切换至普通用户 [rootlocalhost Desktop]# su - lisi Last login: Wed Sep 12 23:47:44 CST 2018 on pts/0 [lisilocal…

CentOS6找回root密码 - 黑猴子

1&#xff09;重启Linux&#xff0c;见到下图&#xff0c;在3秒钟之内按下回车 2&#xff09;三秒之内要按一下回车&#xff0c;出现如下界面 3&#xff09;按下e键就可以进入下图 4&#xff09;移动到下一行&#xff0c;再次按e键 5&#xff09;移动到下一行&#xff0c;进行修…