NOIP模拟赛 拓展
题目描述 Description###
\(φ\) 函数是数论中非常常用的函数。对于正整数 \(x\) ,\(φ(x)\) 表示不超过 \(x\) 的所有正整数与 \(x\) 互质的个数。
现在我们对它进行一次拓展:对于正整数 \(x\) ,\(y\) ,定义 \(φ(x,y)\) 表示不超过 \(y\) 的所有正整数与 \(x\) 互质的个数。
现在我们给定正整数 \(n\) 和 \(m\) ,对于所有不超过 \(n\) 的正整数 \(i\) ,求 \(φ(i,m)\) 。
输入描述 Input Description###
输入仅一行两个正整数 \(n\) 和 \(m\) 。
输出描述 Output Description###
输出 \(n\) 行,每行一个整数。第 \(i\) 行表示 \(φ(i,m)\) 。
样例输入 Sample Input###
11 10
样例输出 Sample Output###
10
5
7
5
8
3
9
5
7
4
10
数据范围及提示 Data Size & Hint###
\(n \leq 10^5,m \leq 10^{15}\)
之前的一些废话###
题解###
正难则反,我们考虑\(m\) 以内能被\(n\) 整除的所有数,含有所有\(n\) 的因子的很显然是可以的,然后我们就可以通过容斥原理来加加减减来求得这个值,找找规律可以发现,含有平方因子的数不会参与其中的讨论,含有奇数个质因子的数应该是加,含有偶数个质因子的数应该是减,所以我们来一个素数筛来预处理每一个数的符号,然后$\sqrt{i} $ 的时间枚举每一个i的因数,然后进行计算。复杂度$ O(预处理+n\sqrt{n} )$
代码###
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
#define X first
#define Y second
#define mp make_pair
#define mem(a,b) memset(a,b,sizeof(a))
inline LL read()
{
LL x=0,f=1;char c=getchar();
while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}
while(isdigit(c)){x=x*10+c-'0';c=getchar();}
return x*f;
}
const int maxn=100000;
int n,prime[maxn],end,sign[maxn+20];
LL m,sum;
bool vis[maxn+20];
void init()
{
for(int i=2;i<=maxn;i++)
if(!vis[i])
{
prime[++end]=i;
for(LL j=(LL)i*(LL)i;j<=(LL)maxn;j+=i)vis[j]=1;
}
for(int i=2;i<=maxn;i++)
{
if(!vis[i])sign[i]=1;
if(!sign[i])continue;
for(int j=1;j<=end && (LL)i*(LL)prime[j]<=maxn;j++)
{
if(i%prime[j]==0)sign[i*prime[j]]=0;
else sign[i*prime[j]]=-sign[i];
}
}
}
int main()
{
init();
n=(int)read();m=read();
printf("%lld\n",m);
for(int i=2;i<=n;i++)
{
int s=(int)sqrt(i);
sum=0ll;
for(int j=1;j<=s;j++)
if(i%j==0)
{
if(j!=1)sum+=(m/j)*sign[j];
if(j*j!=i)sum+=(m/(i/j))*sign[i/j];
}
printf("%lld\n",m-sum);
}
return 0;
}
总结###
找找规律画画图这种题还是比较简单的。
事后发现这玩意居然是莫比乌斯函数,我居然自己推出了这么高深的东西!
NOIP模拟赛 拓展的更多相关文章
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
- 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...
- CH Round #58 - OrzCC杯noip模拟赛day2
A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...
- CH Round #52 - Thinking Bear #1 (NOIP模拟赛)
A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...
随机推荐
- UVA 12165 Triangle Hazard
https://cn.vjudge.net/problem/UVA-12165 题目 给出D.E.F分BC,CA,AB的比$m_1:m_2$,$m_3:m_4$,$m_5:m_6$和PQR三点的坐标, ...
- centos7删除MariaDB怎么操作
有时我们要在centos上安装一些组件,需要先把原来的数据库删除,比如MariaDB,不然就出现冲突错误,那么如何删除数据库呢?首先查询所安装的MariaDB组件: [root@localhost l ...
- Rails + Webpacker + Puma + Nginx 部署
准备 ssh 登录 首先 ssh 登录服务器,免密码登录可以参考 ssh 免密码登录服务器 创建部署用户 $ sudo adduser deploy 安装依赖 Ruby 这里使用 RVM 安装和管理 ...
- JS模仿腾讯图片新闻
仿照腾讯图片新闻的幻灯,功能并不完全一样.最开始打算做这个的时候,突然觉得好像做不来.想想如果一步一步,一个功能一个功能的做应该能搞定. 我做这个例子的思路是这样的: 先把需要的html和css代码写 ...
- golang之引用自己定义的包
初始目录如下: 其中main.go只有一个主函数main(),用于运行程序,array文件夹是自己定义的包,里面spArr.go位于package array. spArr中的函数名或变量首字母得大写 ...
- [01]从零开始学 ASP.NET Core 与 EntityFramework Core 课程介绍
从零开始学 ASP.NET Core 与 EntityFramework Core 课程介绍 本文作者:梁桐铭- 微软最有价值专家(Microsoft MVP) 文章会随着版本进行更新,关注我获取最新 ...
- JavaScript判断对象和数组
在调用后端接口时,由于后端接口的不规范统一,接口最外层在没有数据时返回的是空数组(其实更想要的是空json对象,接口返回的data数据应该统一返回json对象,便于扩展),而在有数据时返回的是json ...
- vue拖拽组件开发
vue拖拽组件开发 创建临时vue项目 先查看node和npm版本,怎么安装就不多多bb了 再安装vue-cli npm install vue-cli -g //全局安装 vue-cli 检测是否安 ...
- shell 命名管道,进程间通信, ncat作http server
命名管道基础 命名管道也被称为FIFO文件, 在文件系统中是可见的,并且跟其它文件一样可以读写! 命名管道特点: 当写进程向管道中写数据的时候,如果没有进程读取这些数据,写进程会堵塞 当读取管道中的数 ...
- 机器学习常见的几种评价指标:精确率(Precision)、召回率(Recall)、F值(F-measure)、ROC曲线、AUC、准确率(Accuracy)
原文链接:https://blog.csdn.net/weixin_42518879/article/details/83959319 主要内容:机器学习中常见的几种评价指标,它们各自的含义和计算(注 ...