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,一经查实,立即删除!

相关文章

[UE4]C++中extern关键字浅谈

变量声明和变量是有区别的 extern int i; //只是声明i而非定义i int j; //声明而且还定义了j 任何一个显式初始化的声明都将成为定义&#xff0c;而不管有没有extern&#xff0c;extern语句一旦变量赋予了初始值就变成了定义。 extern double pi3.1415926; //定义 stat…

PHP 计算两个两个文件的相对路径

例&#xff1a; a‘/a/b/c/d/e.php′;a = ‘/a/b/c/d/e.php’; b ‘/a/b/12/34/c.php’; 二者的相对路径结果为&#xff1a;/a/b/12/34/../../c/d/e.php //计算出$b相对于$a的相对路径: function getRelativePath($a,$b){$returnPath array(dirname($b));$arrA explode(…

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;反过来是可以的。而且可以在没有…

PHP 实现中文截取无乱码的方法

PHP 实现中文截取无乱码的方法 需知&#xff1a; 中文字符在gbk编码下为2个字符&#xff0c;utf-8下为3个字符中文字符的ASCII值是从0xa0后开始的通过ord()函数可以返回字符串中第一个字符的ASCII值&#xff0c;chr()函数作用相反 方法&#xff1a; function GBsubstr($str…

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]…

Laravel框架中的路由和控制器

路由 简介&#xff1a; 将用户的请求转发给相应的程序进行处理作用&#xff1a;建立url和程序之间的映射请求类型&#xff1a;get、post、put、patch、delete目录&#xff1a;app/http/routes.php基本路由&#xff1a;接收单种请求类型 //get请求 Route::get(hello1,function(…

小朋友学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">…

Laravel 中的 视图和模型

视图 简介&#xff1a;视图包含了应用程序渲染的HTML数据&#xff0c;并将应用程序的显示逻辑与控制逻辑有效的分离开。在Laravel中&#xff0c;视图被保存在resources/views目录中。 php //数组中的内容可以表示在视图中调用数组&#xff0c;可以用echo $name得到name的值 …

BCZM : 1.13

Nim转载于:https://www.cnblogs.com/noryes/p/8640630.html

yii多表查询--学习随笔

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

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

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

Laravel中数据库的操作

查找数据库的三种方式 DB facade(原始查找)查询构造Eloquent ORM新建数据表 //示例表 create table if not exits student( ‘id’ int auto_increment primaary key, ‘name’ varchar(255) not null default “”comment’姓名’, ‘age’ tinyint usigned not null defa…

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

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

Laravel中的Blade模版

Blade模版简介 Blade模版的好处&#xff1a; 模版继承&#xff08;template inheritance&#xff09;视图片段&#xff08;sections&#xff09;部分指令&#xff1a; extend(‘xxx’)为子页面指定所继承的页面布局模版section(‘xxx’)为子页面提供所继承的页面中指定的部分…

三元表达式,列表解析和生成器表达式

三元表达式 在以前&#xff0c;在诸如比较两个数大小的时候&#xff0c;通常的写法都是下面的样子 if x > y:print("the max is x") else:print("the max is y") 三元表达式的语法为&#xff1a; True if expression else False 现在可以个体三元表达式…