南京网络赛 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 \ ...
随机推荐
- 2019ICPC徐州游记
裂开QAQ 热身赛听隔壁电科的猛男们说赛前别做题,结果我们3个憨憨还是跑到网吧打哈尔滨的重现赛.结果真的炸裂了,队友D被E题卡哭了,我和队友Z被I题搞炸. 回宾馆的路上都害怕明天裂开. 果然想什么坏事 ...
- python之入门
第一章 入门 1.1 变量-输出 a = 1 # 声明变量 a # 变量的名字 = # 赋值 1 # 值 变量定义的规则: 1.变量由数字,字母,下划线组成 2.不能以数字开头 3.不能使用pytho ...
- sql server 函数详解(2)数学函数
绝对值函数ABS(x)和返回圆周率的函数PI() 平方根函数SQRT(x) 获取随机函数的函数RAND()和RAND(x) 四舍五入函数ROUND(x,y) 符号函数SIGN(x) 获取整数的函数CE ...
- docker数据卷挂载
docker数据卷挂载笔记 我们的服务运行时必不可少的会产生一些日志,或是我们需要把容器内的数据进行备份,甚至多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 容器中管理数据主要有两种方式: ...
- js方法的封装
封装是为了更好的调用,当我们很多页面都需要同一种方法的时候,为了避免每个页面都需要进行重写方法,增加工作量,这个时候就需要我们对部分公共的方法进行封装,这样便于更好的进行调用 我在写接口的时候用到了 ...
- 深入理解Java的反射机制
https://blog.csdn.net/u012585964/article/details/52011138 http://www.importnew.com/20339.html 一,java ...
- shared_ptr的原理与应用
new与赋值的坑 赋值(assignment)和new运算符在C++与Java(或C#)中的行为有本质的区别.在Java中,new是对象的构造,而赋值运算是引用的传递:而在C++中,赋值运算符意味着& ...
- C#.net中的rank方法
string[,] abcd = new string[2, 4];abcd[0, 0] = "a";abcd[0, 1] = "b";abcd[0, 2] = ...
- (转)MyBatis 一、二级缓存和自定义缓存
1.一级缓存 MyBatis 默认开启了一级缓存,一级缓存是在SqlSession 层面进行缓存的.即,同一个SqlSession ,多次调用同一个Mapper和同一个方法的同一个参数, 只会进行一次 ...
- [工具] BurpSuite--Intruder功能
BurpSuite--Intruder功能 0x00 配置说明 intruder是进行爆破的,基本流程是标注请求的爆破参数,然后配置字段,选择爆破方式进行爆破,下面来记录下工具的使用 选中intrud ...