求欧拉函数的前缀和

欧拉函数前缀和 首先在这里说声抱歉 我的上一篇欧拉函数的代码有一个小漏洞: 上一篇的链接 //这里先乘后除乘的时候可能会造成数据溢出 res = res * (i - 1) / i; //所以这个操作要先除后乘 res = res / i * (i - 1); //这个也同理 res = res * (n - 1) / n; 好了现在开始正题 有些题需要我们求φ(1)+φ(2)+φ(3)+…+φ(N) 显然这时... 阅读详情

如题
输入一个整数n(n&lt;=1010)n(n&lt;=10^{10})n(n<=1010)
输出一个对100000000710000000071000000007去模的数

用了ees,有bug,先放一下,等等再调

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define ll long long
#define maxx 100105
#define mod 1000000007
using namespace std;
int prime[maxx],cnt;
int phi[maxx];
int sum[maxx];
void init()
{
    for(int i=1;i<maxx;i++)phi[i]=i;
    for(int i=2;i<maxx;i++)sum[i]=i;
    for(int i=2;i<maxx;i++)
    {
        if(phi[i]==i)
        {
            phi[i]--;
            prime[++cnt]=i;
        }
        for(int j=1;j<=cnt;j++)
        {
            if((ll)prime[j]*i>=maxx)break;
            sum[i%prime[j]]=0;
            if(i%prime[j])
                phi[i*prime[j]]=phi[i]*(prime[j]-1);
            else
            {
                phi[i*prime[j]]=phi[i]*prime[j];
                break;
            }
        }
    }
    for(int i=2;i<maxx;i++)
    {
        phi[i]+=phi[i-1];
        if(phi[i]>=mod)phi[i]-=mod;
        sum[i]+=sum[i-1];
        if(sum[i]>=mod)sum[i]-=mod;
    }
}
ll w[maxx<<1],tot;
int id1[maxx],id2[maxx];
int g1[maxx<<1];//个数和
int g2[maxx<<1];//质数和
int _s;
ll N;
void work()
{
    _s=sqrt(N)+1;
    tot=0;
    for(ll i=1,last;i<=N;i=last+1)
    {
        ll now=N/i;
        last=N/now;
        w[++tot]=now;
        if(now<=_s)id1[now]=tot;
        else id2[N/now]=tot;
        g1[tot]=(now-1)%mod;g2[tot]=(now+2)*(now-1)/2%mod;
    }
    for(int i=1;i<=cnt&&prime[i]<_s;i++)
    {
        ll P=(ll)prime[i]*prime[i];
        for(int j=1;j<=tot&&P<=w[j];j++)
        {
            ll now=w[j]/prime[i];
            int k=now<=_s?id1[now]:id2[N/now];

            g1[j]-=(g1[k]-(i-1)+mod)%mod;
            if(g1[j]<0)g1[j]+=mod;

            int temp=g2[k]-sum[prime[j]-1];
            if(temp<0)temp+=mod;
            g2[j]-=(ll)temp*prime[j]%mod;
            if(g2[j]<0)g2[j]+=mod;
        }
    }
}
int get(ll x)
{
    if(x<=_s)
    {
        int temp=g2[id1[x]]-g1[id1[x]];
        if(temp<0)temp+=mod;
        return temp;
    }
    else
    {
        int temp=g2[id2[N/x]]-g1[id2[N/x]];
        if(temp<0)temp+=mod;
        return temp;
    }
}
int ans;
void dfs(ll num,int res,int cur)
{
    ll temp=num*prime[cur];
    if(temp>N)return;
    ll _res=(ll)res*(prime[cur]-1)%mod;
    ll _n=N/prime[cur];
    if(prime[cur]<_n)
    {
        ll temp1=get(_n)-(sum[prime[cur]]-cur+mod)%mod;
        if(temp1<0)temp1+=mod;
        ans+=_res*temp1%mod;
        if(ans>=0)ans-=mod;
        dfs(temp,_res,cur+1);
    }
    for(;;)
    {
        temp*=prime[cur];
        if(temp>N)break;
        _res*=prime[cur];
        ans+=_res;
        if(ans>=mod)ans-=mod;
        dfs(temp,_res,cur+1);
    }
}
int solve(ll n)
{
    ans=1;
    N=n;
    work();
    ans+=(g2[1]-g1[1]+mod)%mod;
    if(ans>=mod)ans-=mod;
    dfs(1,1,1);
    return ans;
}
int main()
{
    init();
    ll n;cin>>n;
    cout<<solve(n)<<endl;
    return 0;
}
无刷直流电机矢量控制(四):基于滑模观测器的无传感器控制 无刷直流电机矢量控制,采用转速、电流双环控制,电流环dq解耦,d轴采用id=0控制,q轴采用转速外环。采用滑模观测器(SMO),根据电压电流信息进行电机位置角度动态估算,模型可直接运行,转速和角度跟踪精度较高。 本文整理了该方法的基本原理,介绍了在MATLAB/Simulink中的建模和仿真过程,最后附上完整的模型文件。 一、基本原理 滑模观测器(下文简称SMO)是基于滑模变结构控制方法的一种状态观测器。其针对无刷直流电机转子位置估算的实现过程如下。 假设采用矢量控... 阅读详情

相关推荐

软件工程案例教程·韩万江【课后习题】

!!!!

weixin_57858263的博客 6419

POJ2478 Farey Sequence【欧拉函数+前缀和】

POJ2478 Farey Sequence 题目 函数F(n)定义为最简分数 a/b 的个数,其中n>1,0<a<b<=n,求F(n)的值 输入 正整数n,n=0时结束 输出 F(n) 样例输入 2 3 4 5 0 样例输出 1 3 5 9 分析 当a和b互质时a/b为最简分数,设f(n)表示为小于n且与n互质的数的个数,那么易得F(n...

逐梦者 402

SRAM compiler中 Number of banks 设置

的值时,需要考虑应用的性能需求、功耗要求和面积限制。设计者应根据具体的应用场景选择合适的bank数量,以优化整体系统性能。bank是一种用于分离存储器访问的设计结构,允许同时对不同的存储区域进行读写操作,从而提高存储器的并发访问性能。选项用于指定 SRAM 存储器的 并发存储区域。在 SRAM 编译器中,

hzmscut的博客 1872

分子个数 数论(欧拉函数 前缀和

欧拉函数

Rachelhello123的博客 342

SAR学习笔记后续-phased工具箱介绍

摘要:相控阵雷达介绍,基于仿真对MATLAB中phased工具箱进行了详细介绍

yjh_2019的博客 1万+

通达信强龙趋势幅图指标:从强弱分析到买卖点实战指南

在股票技术分析中,趋势判断一直是交易决策的核心环节。传统指标通常依赖均线交叉或MACD金叉来确认趋势,但这种确认机制天然存在滞后性,往往等信号明确时行情已走过大半。针对这一问题,基于价格位置、量能配合和均线结构三个维度综合打分的思想逐渐受到关注,通过量化个股所处强弱区间,帮助投资者更快识别强势股与风险信号。这类强弱分析工具不仅适用于刚接触公式编辑的新手,也能为有经验的交易者提供一把可视化的“强度刻度尺”。在实际应用中,结合回踩低吸、离场判断等交易场景,能够有效提升买卖点的把握能力。本文详细解析通达信强龙趋势

weixin_29044157的博客 326

基础数论(Farey Sequence)(欧拉函数,欧拉线性筛,前缀和)

Farey Sequence 众所周知,小涛涛学长是数论的king,artist今天去请教了他一个问题,小涛涛学长读完题目后,觉得太简单了,对artist十分失望,随即离开,只留下一个背影,artist向你求助,你能帮帮她吗? 有一个数列叫做dxl数列,对任意n,DXLn代表一个包含不可简化(不可约分)的有理分数a/b的序列,满足0 < a < b <= n且gcd(a,b)=1,序列中的分数按照递增顺序排列。 前几个DXLn为: DXL2 = {1/2} DXL3 = {1/3, 1/2

weixin_51979465的博客 444

【poj 3090】Visible Lattice Points(数论--欧拉函数 找规律求前缀和)

题意:问从(0,0)到(x,y)(0≤x, y≤N)的线段没有与其他整数点相交的点数。 解法:只有 gcd(x,y)=1 时才满足条件,问 N 以前所有的合法点的和,就发现和上一题—— 【poj 2478】Farey Sequence(数论--欧拉函数 找规律求前缀和) 求 x/y,gcd(x,y)=1 且 x<y 很像。 而由于这里 x可等于或大于y,于是就求 欧拉函数的前缀和*2+...

weixin_34088838的博客 123

YOLOv11涨点改进 | 首发全网创新、主干改进篇 | AAAI 2026 | PartialNet 主干让 YOLOv11 更加强大!引入部分通道机制 和 部分注意力卷积,全方面提升了模型的性能

本文提出PartialNet主干网络改进YOLOv11的方法,通过部分通道机制(PCM)和部分注意力卷积(PATConv)提升模型效率。PartialNet将特征图通道拆分并应用不同操作,显著减少计算量和内存占用。主要创新包括:1)部分通道机制实现计算优化;2)三种注意力模块(PATch/PATsp/PATsf)增强特征提取;3)动态部分卷积(DPConv)自适应调整计算复杂度。文章详细提供了代码实现和YOLOv11集成方法。

Ai缝合怪、助力小伙伴高效发论文 268

SCADA|测试KingSCADA4.0信创版采集汇川PLC AC810数据

摘要:雷工分享KingSCADA4.0信创版采集汇川PLC数据的配置过程。由于项目繁忙,笔记更新延迟。信创产业要求采用国产化产品,此次通过ModbusTCP协议连接AC810 PLC。主要步骤包括:新建IOServer应用(需厂家协助从3.8升级至4.0)、安装ModbusTCP驱动、配置设备地址(192.168.1.88:5021)、运行IOServer并通过网页监控变量。尽管信创版操作体验较差,但出于国产化战略需要仍需使用。雷工表示理解产品初期不足,相信未来会逐步优化。2025年4月11日记录于四川绵阳

做有价值的事,积累有价值的笔记! 863

The Euler function 数论(筛法求欧拉函数)+前缀和

The Euler function phi is an important kind of function in number theory, (n) represents the amount of the numbers which are smaller than n and coprime to n, and this function has a lot of beautiful characteristics. Here comes a very easy question: suppose

Enjoy10ve的博客 401

YOLOv11 改进 - C2PSA | C2PSA融合TSSA(Token Statistics Self-Attention)令牌统计自注意力,优化遮挡目标感知

本文介绍了Token Statistics Self-Attention(TSSA)机制,并将其集成到YOLOv11中。传统自注意力计算复杂度高,TSSA进行了范式转变,基于token统计特征实现高效注意力交互。它通过“算法展开”推导得出,以“最大编码率降低”为目标,实现特征学习。TSSA包含动态分组和低秩投影优化两步创新,具备线性复杂度。我们将TSSA代码集成到YOLOv11的C2PSA模块中。实验表明,改进后的YOLOv11在目标检测任务中表现良好,验证了TSSA机制的有效性。

魔改工程师的博客 669

BZOJ2818: Gcd 欧拉函数求前缀和

给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. 如果两个数的x,y最大公约数是z,那么x/z,y/z一定是互质的 然后找到所有的素数,然后用欧拉函数求一下前缀和就行 #include <iostream> #include <stdio.h> #include <string.h> #...

weixin_30391339的博客 172

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

杜教筛 求 莫比乌斯前缀和&欧拉函数前缀和

#include<bits/stdc++.h> using namespace std; #define ll long long const int maxn = 5e6 +100; const int MOD =998244353; int p[maxn],vis[maxn],mu[maxn]; ll phi[maxn]; int cnt = 0 ; ll qpow(ll a,ll b){ ll e=1; while(b){ if(b%2)e=(e*a)%

qq_43206953的博客 326

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

洛谷P2158 [SDOI2008]仪仗队 (线性筛欧拉函数求前缀和)

题目链接 题解: 由题意可知,从左下角的点到其他所有点连成的不同斜率的边数即为所求。要求得边长 y / x 不同的数量( y < x),则求与 x 互质的数的个数 *2+3 即可(因为只求出了一个三角形的答案数量,需要*2来求正方形矩阵的答案数量,+3是有三个特殊的边,即两条 y / x == 0 以及一条 y / x == 1)。由于边长为 n的边的答案包含了边长为 n - 1 的边...

ttoobne 463

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

hdu 2824 线性筛素数求欧拉函数+前缀和

因为只是区间查询,没有修改,所以只需要提前求出前缀和即可,本题难点在于数据量大导致数组用起来比较紧张,所以要重复使用顶用过的数组 #include #include #include #include #define MAX 3000001 using namespace std; int p[1000000],pt; long long phi[MAX]; bool m[MAX]

llin-黎辰 947

【poj 2478】Farey Sequence(数论--欧拉函数 找规律求前缀和)

题意:定义 Fn 序列表示一串 <1 的分数,分数为最简分数,且分母 ≤n 。问该序列的个数。(2≤N≤10^6) 解法:先暴力找规律(代码见屏蔽处),发现 Fn 序列的个数就是 Φ(1)~Φ(n) 的和。于是用欧拉筛预处理就好了。 注意——求前缀和要用 long long 的类型。 1 #include<cstdio> 2 #include<cstdlib...

weixin_34296641的博客 168

The Euler function(欧拉函数预处理+素数筛+一维数组求前缀和)

Description The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational numbers a/b with 0 < a < b <= n and gcd(a,b) = 1 arranged in increasing order. The first few are F2 = {1/2} F3 = {1/3, 1/2, 2/3} F4 = {1/4, 1/3,

weixin_54664477的博客 347

数论学习笔记 欧拉函数(一些性质和运用)+杜教筛

本文应sharpland男神要求转载一下这位大佬的欧拉函数博客!! 原文传送门定义在数论中,对正整数n,欧拉函数是小于等于n的数中与n互质的数的数目。并且用符号φ(n)\varphi(n) 表示一个整数的欧拉函数。例如φ(8)=4\varphi(8)=4。φ(1)=1\varphi(1)=1。一些欧拉函数的性质性质一对于一个质数n,φ(n)=n−1\varphi(n)=n-1。 证明:因为n是质

蒟蒻柴犬首相的博客 644

2019 西安邀请赛 B. Product 杜教筛

B. Product 我们先求幂ans: 切换枚举次序: 将互质转化为欧拉函数: 对于比较大的前缀和欧拉函数Sn,我们使用杜教筛: ...

ccsu_cat 1430

bzoj 2818 GCD 数论 欧拉函数

bzoj【2818】Gcd Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Input 一个整数N Output 如题 Sample Input 4 Sample Output 4 HINT hint对于样例(2,2),(2,4),(3,3),(4,2) 1...

weixin_30337251的博客 157

数论学习笔记 欧拉函数 (一些性质和运用)内置杜教筛

定义在数论中,对正整数n,欧拉函数是小于等于n的数中与n互质的数的数目。并且用符号φ(n)\varphi(n)表示一个整数的欧拉函数。例如φ(8)=4\varphi(8) = 4。特殊的φ(1)=1\varphi(1)=1。一些欧拉函数的性质性质一对于一个质数n,φ(n)=n−1\varphi(n) = n - 1。 证明: 因为n是质数。性质二若n=pkn=p^k,则φ(n)=pk−pk−1=

YxuanwKeith的博客 6870

求互质数对的两种方法:欧拉函数和容斥原理

1.HDU4135 首先,我们可以先求出1 ~ a - 1内与n互质的数,再求出1 ~ b内与n互质的数.最后利用前缀和算出来即可. #include <iostream> #include <algorithm> #include <queue> #include <cstring> #include <cstdio> #include <cmath> #include <map> #include <un

CK1513710764的博客 1726

【gmoj】【欧拉函数】Gcd会不会

【gmoj】【欧拉函数】Gcd会不会 题目 解题思路 题目十分简单直白 就是求1~n内每个数与其他数的最大公因数的和 假设一个d能被 i 整除那么它的贡献如下 接着将 j/d 那么最大公因数也会 /d,贡献变成这样 然后我们想到欧拉函数 φ(i)意为1~i中有多少个数与 i 互质 那么式子就可以化为 为了节省时间我们可以预处理出所有的φ 可用线性筛o(n)求 不懂的小朋友戳这里 接着我们就枚举 i (所求值/因子) j (因子) ij 即为所求值 转移式即为 ans[ij]=phi[i]*j 最

Y的博客 150

2018 蓝桥杯C++ B组国赛

A.B.C.D 水题 E.搭积木 题意 小明对搭积木非常感兴趣。他的积木都是同样大小的正立方体。在搭积木时,小明选取 m 块积木作为地基,将他们在桌子上一字排开,中间不留空隙,并称其为第0层。随后,小明可以在上面摆放第1层,第2层,……,最多摆放至第n层。摆放积木必须遵循三条规则规则1:每块积木必须紧挨着放置在某一块积木的正上方,与其下一层的积木对齐;规则2:同一层中的积木必...

amwm52937的博客 809
上一篇: 【Contest Hunter Round #56】异象石(lca)
下一篇: 【Codeforces-741C】Arpa’s overnight party and Mehrdad’s silent entering(二分图的定义)
coldfresh
博客等级 码龄10年 107粉丝 405原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值