(数据范围 n<=10^9 ,T<=10 )

首先,我来证明一下 Σμ(d) * σ(i/d)^2 = σ(i^2)

相信做过约数个数和的童鞋都可以完成从右式推到左式,那么我现在就说一下怎么从左边推到右边。

Σμ(d) * σ(i/d)^2

= Σμ(d) * Σ(d|p|i) * Σ(d|q|i)

= Σ(p|i) * Σ(q|i) * Σ(d|p,d|q) μ(d)

= Σ(p|i) * Σ(q|i) * [gcd(p,q)==1]

= σ(i^2)

然后这个题就变成了昨天晚上我做的那个题。

但是我突然又想再推一遍式子。。。

σ(i^2)

= (2*a1 + 1)(2*a2 + 1)(2*a3 + 1)...(2*ak + 1)

= Σ(S属于{1,2,...k}) 2^|S|  *  π(i属于S) ai

= Σ (p|i) 2^w(p)

其中w(x)表示x的质因子个数。

又因为 2^w(x) = Σ (d|x) μ(d)^2

所以上式的前缀和就可以转化成μ^2和σ的前缀和之间的运算了

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1000000;
int zs[maxn/5],t=0,T,sq[maxn+5];
int miu[maxn+5],low[maxn+5],n;
bool v[maxn+5];
ll d[maxn+5]; inline void init(){
miu[1]=1,d[1]=1,low[1]=1;
for(int i=2;i<=maxn;i++){
if(!v[i]) zs[++t]=i,miu[i]=-1,d[i]=2,low[i]=i;
for(int j=1,u;j<=t&&(u=zs[j]*i)<=maxn;j++){
v[u]=1;
if(!(i%zs[j])){
low[u]=low[i]*zs[j];
if(low[i]==i) d[u]=d[i]+1;
else d[u]=d[low[u]]*d[i/low[i]];
break;
} low[u]=zs[j];
d[u]=d[i]<<1;
miu[u]=-miu[i];
}
} for(int i=1;i<=maxn;i++) d[i]+=d[i-1];
for(int i=1;i<=maxn;i++) sq[i]=sq[i-1]+miu[i]*miu[i];
} inline int getsq(int x){
if(x<=maxn) return sq[x]; ll an=0;
for(int i=1;i*(ll)i<=x;i++){
an+=miu[i]*(x/(i*(ll)i));
}
return an;
} inline ll getd(int x){
if(x<=maxn) return d[x]; ll an=0;
for(int i=1,j,now;i<=x;i=j+1){
now=x/i,j=x/now;
an+=(j-i+1)*(ll)now;
}
return an;
} inline ll query(int x){
ll an=0;
for(int i=1,j,now;i<=x;i=j+1){
now=x/i,j=x/now;
an+=(getsq(j)-getsq(i-1))*getd(now);
}
return an;
} int main(){
freopen("function.in","r",stdin);
freopen("function.out","w",stdout); scanf("%d",&T);
init();
while(T--){
scanf("%d",&n);
printf("%lld\n",query(n));
}
return 0;
}

  

某考试 T1 function的更多相关文章

  1. 考试T1总结(又CE?!)

    考试T1CE... 最近不适合考试 T1 扶苏是个喜欢一边听古风歌一边写数学题的人,所以这道题其实是五三原题.歌曲中的主人公看着墙边的海棠花,想起当年他其实和自己沿着墙边种了一排海棠,但是如今都已枯萎 ...

  2. 【20180807模拟测试】t1 function

    low逼的我也只能写这样的水题... 题面 对于一个整数,定义 f(x)为他的每个数位的阶乘的乘积.例如 f(135)=1! * 3! * 5! =720.给出一个数 a(可以包含前缀零),a 满足他 ...

  3. 某考试T1 game

    题目背景 无 题目描述 Alice 和 Bob 在一个圆环上玩游戏.圆环上有 n 个位置,按照顺时针顺序 依次标号为 1 到 n.Alice 和 Bob 分别有一个数字集合,集合中都是在 [1, n− ...

  4. 某考试 T1 arg

    题目描述 给出一个长度为 m 的序列 A, 请你求出有多少种 1...n 的排列, 满足 A 是它的一个 LIS. 输入格式 第一行两个整数 n, m. 接下来一行 m 个整数, 表示 A. 输出格式 ...

  5. 某考试 T1 lcm

    把lcm写成 (a+n)*(b+n) / gcd(a+n,b+n). 因为gcd可以辗转相减,所以就成了gcd(abs(a-b),a+n),一个常量一个变量之间的gcd,我们可以直接把abs(a-b) ...

  6. 2019.2.25考试T1, 矩阵快速幂加速递推+单位根反演(容斥)

    \(\color{#0066ff}{题解}\) 然后a,b,c通过矩阵加速即可 为什么1出现偶数次3没出现的贡献是上面画绿线的部分呢? 考虑暴力统计这部分贡献,答案为\(\begin{aligned} ...

  7. 2019.2.14 考试T1 FFT

    \(\color{#0066ff}{ 题目描述 }\) 衡水二中的机房里经常有人莫名其妙地犇雷,leizi很生气,决定要找出那个犇雷的人 机房有n个人,每个人都认为机房里有两个人可能会犇雷,其中第i个 ...

  8. 某考试 T1 fair (18.5.1版)

    转化一下模型:每天可以选1也可以选0,但是任意前i天(i<=n)1的个数都必须>=0的个数,求总方案数/2^n. 然后可以发现这是一个经典题,随便推一下公式发现等于  C(n,n/2)/2 ...

  9. 某考试 T1 str

    一开始死磕sam,发现根本没法做...... 后来想了想,反正匹配子串的大部分不是sam就是 二分+hash啊,,,于是就想了想二分+hash,发现好像可以做啊! 就是假设我们要让 s1[1] 映射到 ...

随机推荐

  1. JS中Null与Undefined的区别--2015-06-26

    在JavaScript中存在这样两种原始类型:Null与Undefined.这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined? Undef ...

  2. phpstorm设置方法头信息备注

    一.目标,如下图,希望在方法上增加如下头信息备注 二.设置live template: 三.增加方法头信息备注,如下所示: * created by ${USER} at ${DATE} ${TIME ...

  3. verilog behavioral modeling--procedural continous assignment(不用)

    assign / deassgin force /release the procedural continuous assignments(using keywords assign and for ...

  4. linux中的硬盘及flash操作

    磁盘操作是块设备的必备操作,需要认真掌握. 一.硬盘 1.硬盘文件 默认串口硬盘的设备文件为sda(第一块硬盘).sdb(第二块硬盘).... 默认并口硬盘的设备文件为hda(第一块硬盘).hdb(第 ...

  5. Django中重定向页面的时候使用命名空间

    urls.py from django.urls import path from . import views app_name='front' urlpatterns = [ path('',vi ...

  6. One-to-one

    创建模型 在本例中,Place 和 Restaurant 为一对一关系 from django.db import models class Place(models.Model): name = m ...

  7. python爬虫入门三:requests库

    urllib库在很多时候都比较繁琐,比如处理Cookies.因此,我们选择学习另一个更为简单易用的HTTP库:Requests. requests官方文档 1. 什么是Requests Request ...

  8. CSS 媒体查询 响应式

    媒体查询 从 CSS 版本 2 开始,就可以通过媒体类型在 CSS 中获得媒体支持.如果您曾经使用过打印样式表,那么您可能已经使用过媒体类型.清单 1 展示了一个示例. 清单 1. 使用媒体类型 &l ...

  9. Linux下平滑升级nginx

    一.升级前准备 1.对nginx的配置文件nginx.conf做备份: 2.新建目录/root/nginx,将安装包和脚本上传到该目录下: 二.平滑升级nginx 1.开始编译新版本的nginx cd ...

  10. java foreach的实现原理

    http://blog.csdn.net/moqihao/article/details/51078464 本质是通过集合的iterator方式实现,所以再使用foreach集合,要强制判断集合的是否 ...