当前位置:网站首页>分子个数 数论(欧拉函数 前缀和
分子个数 数论(欧拉函数 前缀和
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;
}
边栏推荐
猜你喜欢
随机推荐
射频芯片ATE测试从入门到放弃之参数测试
vscode插件设置——Golang开发环境配置
全球首款量产,获定点最多!这家AVP Tier1如何实现领跑?
伦敦银最新均线分析系统怎么操作?
XSLT – 服务器端概述
用两个栈模拟队列
Shell 用法梳理总结
rsync basic usage
小身材有大作用——光模块基础知识(一)
国内首发可视化智能调优平台,小龙带你玩转KeenTune UI
响应式织梦模板塑身瑜伽类网站
【并发编程】ReentrantLock的lockInterruptibly()方法源码分析
Using matlab to solve the linear optimization problem based on matlab dynamic model of learning notes _11 】 【
The world's first mass production, with the most fixed points!How does this AVP Tier1 lead?
JS get parameter value of URL hyperlink
超级完美版布局有快捷键,有背景置换
【深度学习】基于tensorflow的服装图像分类训练(数据集:Fashion-MNIST)
查看CUDA、pytorch等的版本号
简单了解下 TCP,学习握手和挥手以及各种状态到底是怎么样的
智能管理PoE交换机









