当前位置:网站首页>分子个数 数论(欧拉函数 前缀和
分子个数 数论(欧拉函数 前缀和
2022-08-03 23:58:00 【Rachel caramel】
题面:

思路:
题目的意思其实就是求 欧拉函数的前缀和
∑ i = 2 d ∑ j = 1 j = i − 1 [ gcd ( j , i ) = 1 ] 注: [ gcd ( j , i ) = 1 ] 的含义为: 若 gcd ( j , i ) = 1 , [ gcd ( j , i ) = 1 ] = 1 若 gcd ( j , i ) ≠ 1 , [ gcd ( j , i ) = 1 ] = 0 \sum_{i=2}^{d} \sum_{j=1}^{j=i-1}[\gcd(j,i)=1]\\ \text{注:}[\gcd(j,i)=1] \text{的含义为:}\\ \text{若}\gcd(j,i)=1,[\gcd(j,i)=1]=1\\ \text{若}\gcd(j,i)\not=1,[\gcd(j,i)=1]=0\\ i=2∑dj=1∑j=i−1[gcd(j,i)=1]注:[gcd(j,i)=1]的含义为:若gcd(j,i)=1,[gcd(j,i)=1]=1若gcd(j,i)=1,[gcd(j,i)=1]=0
欧拉函数的各种推导可见欧拉函数总结
代码:
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
const int maxn=111111;
int d;
long long ans,phi[maxn];
void handle(int n)
{
for(int i=1;i<=n;i++) phi[i]=i;
for(int i=2;i<=n;i++)
{
if(phi[i]==i)
{
for(int j=i;j<=n;j+=i) phi[j]=phi[j]-phi[j]/i;
}
}
}
int main()
{
scanf("%d",&d);
handle(d);
for(int i=2;i<=d;i++) ans+=phi[i];
printf("%lld\n",ans);
return 0;
}
边栏推荐
猜你喜欢
随机推荐
2021年数据泄露成本报告解读
Unity2021 releases WebGL fog effect disappearing problem
Salesforce的中国区业务可能出现新变化,传言可能正在关闭
Node.js的基本使用(三)数据库与身份认证
A simple understanding of TCP, learn how to shake hands, wave hands and various states
jav一键生成数据库文档
Scala basics [regular expressions, framework development principles]
"Miscellaneous" barcode by Excel as a string
Salesforce's China business may see new changes, rumors may be closing
LYVE1抗体丨Relia Tech LYVE1抗体解决方案
Read FastDFS in one article
Flutter教程之为什么 Flutter 是创业的最佳选择?
【杂项】如何将指定字体装入电脑然后能在Office软件里使用该字体?
【杂项】通过Excel为字符串产生条码
Jmeter-断言
Unity 截取3D图像 与 画中画PIP的实现
直播系统聊天技术(八):vivo直播系统中IM消息模块的架构实践
Free自由协议系统开发
A Preliminary Study of RSS Subscription to WeChat Official Account-feed43
搭建好pytorch环境后,pip和conda指令不能用









