T66099 小xzy的数对 题解
T66099 小xzy的数对
题目背景
老师带同学参加表演,要求学生两两一组表演,但有些学生一起会发生冲突,现在老师想知道有多少组学生分到一起时不会发生冲突。
题目描述
学生发生冲突当且仅当他们身上的编号有大于1的公因数。学生身上的编号是1~n。 输入n,输出有多少组学生分到一起时不会发生冲突。
我们认定11与任何数都互质。
输入输出格式
输入格式:
一个数,n
输出格式:
一个数,即答案 不过,还得将答案与一个伟大的模数19491001膜一下
输入输出样例
3
4
4
5
说明
n≤10^8

略读题目,求1~n中互质的对数,便可想到欧拉函数。
如何计算欧拉函数
long long getphi(){
int i=1;long long res=n;
while(n>1){
if(p[i]==0)break;
if(n%p[i]==0){
res=(res/p[i])*(p[i]-1);
while(n%p[i]==0)n/=p[i];
}
i++;
}
if(n>1)res=(res/n)*(n-1);
return res;
}
除此之外,我们也可以通过欧拉函数的积性,使用线形欧拉打表:
void get_phi(){
for(register int i=;i<=n;i++){
if(!v[i]){
prim[++id]=i;
phi[i]=i-;
}
for(register int j=;j<=id;j++){
if(i*prim[j]>n)break;
v[i*prim[j]]=;
if(i%prim[j]==){
phi[i*prim[j]]=(phi[i]*prim[j])%MOD;break;
}
else phi[i*prim[j]]=(phi[i]*(prim[j]-))%MOD;
}
}
}
打完表后,循环就可以啦:
#include <cstdio>
#include <bitset>
#include <iostream>
using namespace std;
const int MOD=;
int n;
bitset<> v;
int prim[],id,phi[]; void get_phi(){
for(register int i=;i<=n;i++){
if(!v[i]){
prim[++id]=i;
phi[i]=i-;
}
for(register int j=;j<=id;j++){
if(i*prim[j]>n)break;
v[i*prim[j]]=;
if(i%prim[j]==){
phi[i*prim[j]]=(phi[i]*prim[j])%MOD;break;
}
else phi[i*prim[j]]=(phi[i]*(prim[j]-))%MOD;
}
}
} int main(){
#ifndef ONLINE_JUDGE
freopen("phi.in","r",stdin);
freopen("phi.out","w",stdout);
#endif
scanf("%d",&n);
get_phi();long long ans=;
for(int i=;i<=n;i++)ans=(ans+phi[i])%MOD;
cout<<ans<<endl;
return ;
}
T66099 小xzy的数对 题解的更多相关文章
- T66597 小xzy的任务 题解
T66597 小xzy的任务 题目背景 今天,小xzy的班主任交给他一个严肃的任务,匹配羽毛球运动员! ! ! 题目描述 羽毛球队有男女运动员各n人.给定2个n×n矩阵P和Q.Pij是男运动员i和女 ...
- C#版 - Leetcode 633. 平方数之和 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...
- [CQOI2014]数三角形 题解(组合数学+容斥)
[CQOI2014]数三角形 题解(数论+容斥) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1328780 链接题目地址:洛谷P3166 BZOJ 350 ...
- 洛谷P1066 2^k进制数(题解)(递推版)
https://www.luogu.org/problemnew/show/P1066(题目传送) (题解)https://www.luogu.org/problemnew/solution/P106 ...
- 51nod 1479 小Y的数论题
一脸不可做题~~~233333 T<=100000,所以一定要logn出解啦. 但是完全没有头绪*&#……%*&……()……#¥*#@ 题解: 因为2^p+2^p=2^(p+1) ...
- BZOJ4200 & 洛谷2304 & UOJ132:[NOI2015]小园丁与老司机——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4200 https://www.luogu.org/problemnew/show/P2304 ht ...
- 关于微信小程序并发数不能超过五个的问题
wx.request 的最大请求数为5个,超过的部分就请求不到了 昨天遇到个问题,首页的请求数一共有9个,但是在有appid开发时竟然一直都没出错,直到我切到没appid的版本的时候才发现了这个问题. ...
- 洛谷 P1102 A-B数对 题解
P1102 A-B 数对 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的 A+B Problem,改用 A-B 了哈哈! 好吧,题目是这样的:给出一串数以及一个数字 ...
- 洛谷【P2022 有趣的数】 题解
题目链接 https://www.luogu.org/problem/P2022 题目描述 让我们来考虑1到N的正整数集合.让我们把集合中的元素按照字典序排列,例如当N=11时,其顺序应该为:1,10 ...
随机推荐
- Java开发笔记(二十九)大整数BigInteger
早期的编程语言为了节约计算机的内存,给数字变量定义了各种存储规格的数值类型,比如字节型byte只占用一个字节大小,短整型short占用两个字节大小,整型int占用四个字节大小,长整型long占用八个字 ...
- PHP实现微信随机红包算法和微信红包的架构设计简介
微信红包的架构设计简介: 原文:https://www.zybuluo.com/yulin718/note/93148 @来源于QCon某高可用架构群整理,整理朱玉华. 背景:有某个朋友在朋友圈咨询微 ...
- react create-react-app 跨域
"proxy":"http://youAddr.com" 直接到根目录package.json里增加上面这行就行了,改成自己需要的地址.
- Array的 map() 和 reduce()
map() map() 方法返回一个新数组,新数组中的元素为原始数组中的元素依次调用参数中的函数处理后的值. map() 方法不会对空数组进行检测,也不会修改原数组. 语法: array.map(fu ...
- jsp+servlet include引入文件指令
1.index.jsp为首页 <%@ page contentType="text/html;charset=UTF-8" import="java.util.*& ...
- 关于flutter插件地图的使用flutter_map
关于flutter插件地图的使用flutter_map flutter_map A Dart implementation of Leaflet for Flutter apps.一个基于leafle ...
- Linux 环境 Java JDK 安装&基本配置
索引: 目录索引 参看代码 GitHub: jdk.txt 一.Linux (DeepinOS) 环境 1.官网下载 jdk-8u112-linux-x64.tar.gz 2.创建目录 mkdir - ...
- SQL Server 索引碎片产生原理重建索引和重新组织索引
数据库存储本身是无序的,建立了聚集索引,会按照聚集索引物理顺序存入硬盘.既键值的逻辑顺序决定了表中相应行的物理顺序 多数情况下,数据库读取频率远高于写入频率,索引的存在 为了读取速度牺牲写入速度 页 ...
- Lua中string.format占位符的使用
虽然lua中字符串拼接"string.format"相对于".."消耗较大,但有时为了代码的可读性,项目中还是经常用到"string.format&q ...
- Ubuntu下crontab启动、重启、关闭命令
在Ubuntu14.04环境下,利用crontab编写shell脚本程序,定时执行php相关程序.在这个过程中,经常使用到的crontab命令如下: (root权限下) crontab启动:/etc/ ...