南京网络赛 E K Sum
终于过了这玩意啊啊啊====
莫比乌斯反演,杜教筛,各种分块,积性函数怎么线性递推还很迷==,得继续研究研究
- #include<bits/stdc++.h>
- using namespace std;
- #define int long long
- #define maxn 1000000+10
- int P[maxn],g[maxn];
- bool vis[maxn];
- unordered_map<int,int> mp;
- int T,n,k;
- const int mod =(1e9+);
- int cnt=;
- void init()
- {
- g[]=;
- for(int i=;i<maxn;i++){
- g[i]=;
- }
- for(int i=; i<maxn; i++)
- {
- //g[i]=1;
- if(!vis[i])
- {
- P[cnt++]=i;
- g[i]=(i*i-)%mod;
- }
- for(int j=; j<cnt&&(P[j]*i)<maxn; j++)
- {
- vis[i*P[j]]=;
- g[P[j]*i]=(g[P[j]]*g[i]%mod);
- if(i%P[j]==)
- {
- g[P[j]*i]=(g[i]*(P[j]*P[j])%mod)%mod;
- break;
- }
- }
- }
- for(int i=; i<maxn; i++)
- {
- g[i]=(g[i]+g[i-]+mod)%mod;
- }
- }
- int qp(int x,int n)
- {
- int ans=;
- while(n)
- {
- if(n&)
- {
- ans=(ans*x)%mod;
- }
- x=(x*x)%mod;
- n>>=;
- }
- return ans%mod;
- }
- int _k;
- int Sum(int x,int n)
- {
- if(x==)
- {
- return (_k-+mod)%mod;
- }
- else
- {
- return (((x*(qp(x,n)-+mod)%mod)%mod*qp((x-)%mod,mod-)%mod)%mod-x+mod)%mod;
- }
- }
- int Sum2(int n)
- {
- int ans=qp(,mod-);
- ans=(ans*((n*(n+)%mod)%mod*(*n%mod+)%mod)%mod)%mod;
- return ans;
- }
- int G(int n)
- {
- int ans=;
- int r;
- for(int i=; i<=n; i=r+)
- {
- r=n/(n/i);
- int x=n/i;
- if(x<maxn)
- {
- ans=(ans+g[x]*(r-i+))%mod;
- }
- else if(mp[x])
- {
- ans=(ans+mp[x]*(r-i+))%mod;
- }
- else ans=(ans+G(x)*(r-i+))%mod;
- }
- mp[n]=(Sum2(n)-ans+mod)%mod;
- return mp[n];
- }
- int cal(int x)
- {
- if(x<maxn)return g[x];
- if(mp[x])return mp[x];
- return G(x);
- }
- char s[maxn];
- signed main()
- {
- init();
- int ans=;
- scanf("%lld",&T);
- //string s;
- while(T--)
- {
- ans=;
- scanf("%lld",&n);
- scanf("%s",s);
- k=;
- _k=;
- int _n=strlen(s);
- for(int i=; i<_n; i++)
- {
- _k=(_k*+s[i]-'')%(mod);
- k=((k*)+s[i]-'')%(mod-);
- }
- int r;
- for(int i=; i<=n; i=r+) ///i
- {
- r=n/(n/i);
- ans=(ans+((Sum((n/i),k))%mod*(cal(r)-cal(i-)+mod)%mod)%mod)%mod;
- }
- cout<<ans<<'\n';
- }
- }
南京网络赛 E K Sum的更多相关文章
- HDU 4750 Count The Pairs (2013南京网络赛1003题,并查集)
Count The Pairs Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others ...
- 2018ICPC南京网络赛
2018ICPC南京网络赛 A. An Olympian Math Problem 题目描述:求\(\sum_{i=1}^{n} i\times i! \%n\) solution \[(n-1) \ ...
- 2019ICPC南京网络赛A题 The beautiful values of the palace(三维偏序)
2019ICPC南京网络赛A题 The beautiful values of the palace https://nanti.jisuanke.com/t/41298 Here is a squa ...
- HDU 4751 Divide Groups (2013南京网络赛1004题,判断二分图)
Divide Groups Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- HDU 4758 Walk Through Squares (2013南京网络赛1011题,AC自动机+DP)
Walk Through Squares Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Oth ...
- 2019-ACM-ICPC-南京区网络赛-E. K Sum-杜教筛+欧拉定理
2019-ACM-ICPC-南京区网络赛-E. K Sum-杜教筛+欧拉定理 [Problem Description] 令\(f_n(k)=\sum_{l_1=1}^n\sum_{l_2=1}^n\ ...
- 2019 南京网络赛A
南京网络赛自闭现场 https://nanti.jisuanke.com/t/41298 二维偏序经典题型 二维前缀和!!! #include<bits/stdc++.h> using n ...
- 2019年南京网络赛E题K Sum(莫比乌斯反演+杜教筛+欧拉降幂)
目录 题目链接 思路 代码 题目链接 传送门 思路 首先我们将原式化简: \[ \begin{aligned} &\sum\limits_{l_1=1}^{n}\sum\limits_{l_2 ...
- 2019南京网络赛E:K Sum
Description: 定义函数 \[ f _n (k) = \sum _{l _1 = 1} ^n \sum _{l _2 = 1} ^n \cdots \sum _{l _k = 1} ^n \ ...
随机推荐
- [转帖]影驰首发PCIe 4.0 SSD:群联AMD合作主控飚出5GB/s
影驰首发PCIe 4.0 SSD:群联AMD合作主控飚出5GB/s https://www.cnbeta.com/articles/tech/851275.htm 硬件发展的真快.. AMD刚刚发布的 ...
- git部分命令笔记
目录 配置user信息 建Git仓库 清空暂存区 git变更文件名 查看暂存区状态 查看历史 查看本地分支 查看所有分支(包含远程) 创建分支 基于远程分支创建本地新分支 查看图形化分支日志 图形化界 ...
- vim 文本编辑器
vim 文件名:命令模式 i 编辑模式 :输入模式 vim +n 文件名:打开文件,将光标置于第N行首部 命令模式进入输入模式进行编辑: i 当前光标位置插入文本 I 在当前行行首插入文本 o 在光标 ...
- RedHat7安装yum工具
一 RedHat7安装yum工具 1.1 查看yum是否可用 yum list yum repolist 1.2 卸载原yum rpm ...
- zabbix 问题
初始化账号和密码 Admin zabbix 出现 :Zabbix server is running No检查zabbix是否有运行 ps -ef|grep zabbix systemctl rest ...
- Big Data(七)MapReduce计算框架
二.计算向数据移动如何实现? Hadoop1.x(已经淘汰): hdfs暴露数据的位置 1)资源管理 2)任务调度 角色:JobTracker&TaskTracker JobTracker: ...
- scp 远程文件复制命令
scp 远程文件复制工具 1.命令功能 scp用户在不同linux主机间复制文件,他采用ssh协议保障复制的安全性.scp复制是全量完整复制,效率不高,使用与第一次复制,增量复制建议rsync命令. ...
- exe 错误
1,NTVDM 是从 WINDOWS NT 架构开始引入的一个子系统进程,目的是虚拟一个DOS环境来运行以前的DOS 16bit 程序.2,只有当启动16位DOS程序时,才会启用 NTVDM 这个进程 ...
- 第二章Python入门
第二章 Python入门 2.1.简介 Python是著名的"龟叔"(Guido van Rossum)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言 Pytho ...
- LOJ-6279-数列分块入门3(分块, 二分)
链接: https://loj.ac/problem/6279 题意: 给出一个长为 的数列,以及 个操作,操作涉及区间加法,询问区间内小于某个值 的前驱(比其小的最大元素). 思路: 同样的分块加二 ...