$n^2-3n+2=\sum_{d|i}f(i)$,问$f(i)$前$n$项和。

方法一:直接切入!

$S(n)=\sum_{i=1}^{n}f(i)=\sum_{i=1}^{n}(i^2-3i+2-\sum_{d|i,d<i}f(d))=\sum_{i=1}^{n}(i^2-3i+2)-\sum_{i=1}^{n}\sum_{d|i,d<i}f(d)=\frac{n(n+1)(2n+1)}{6}-\frac{3n(n+1)}{2}+2n-\sum_{k=2}^{n}\sum_{d=1}^{\left \lfloor \frac{n}{k} \right \rfloor}f(d)$

且不管他是不是什么积性函数了,符合杜教筛形式直接算!!

方法二:仔细乱搞

这一看就是反演形式,那就令$g(n)=n^2-3n+2$,反演得

$f(n)=\sum_{d|n}\mu (d)g(\frac{n}{d})=\sum_{d|n}\mu(d)(\frac{n}{d})^2-3\sum_{d|n}\mu(d)\frac{n}{d}+2\sum_{d|n}\mu(d)=h(n)-3\varphi (n)+2[n=1]$

现在需要知道这三坨东西的前缀和。其中欧拉函数之前写过了,[n=1]的话。。然后就剩个$h(n)$也就是$\sum_{d|n}\mu(d)(\frac{n}{d})^2$。

$\sum_{i=1}^{n}\sum_{d|i}\mu (d)(\frac{i}{d})^2=\sum_{k=1}^{n}k^2\sum_{d=1}^{\left \lfloor \frac{n}{k} \right \rfloor}\mu (d)$。

莫比乌斯的前缀和就可以杜教筛啦!!

方法一是便捷的方式,但方法二是常用的套路,各有千秋。代码方法一。

 #include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
//#include<assert.h>
#include<algorithm>
//#include<iostream>
//#include<bitset>
using namespace std; int T,n,pr;
#define maxn 1000011
#define LL long long
const int mod=1e9+;
LL s[maxn],f[maxn];
void pre(int n)
{
for (int i=;i<=n;i++)
{
f[i]+=1ll*i*i-*i+;
for (int j=i+i;j<=n;j+=i) f[j]-=f[i];
}
for (int i=;i<=n;i++) s[i]=((s[i-]+f[i])%mod+mod)%mod;
} struct Edge{int to,v,next;};
#define maxh 1000007
struct Hash
{
int first[maxh],le; Edge edge[maxn];
Hash() {le=;}
void insert(int y,int v)
{int x=y%maxh; Edge &e=edge[le]; e.to=y; e.v=v; e.next=first[x]; first[x]=le++;}
int find(int y)
{int x=y%maxh; for (int i=first[x];i;i=edge[i].next) if (edge[i].to==y) return edge[i].v; return -;}
}h; int six=(mod+)/,two=(mod+)>>;
int calc(int n)
{
if (n<=pr) return s[n];
int tmp=h.find(n); if (tmp!=-) return tmp;
int tot=;
for (int i=,last;i<=n;i=last+)
{
last=n/(n/i);
tot+=(last-i+)*1ll*calc(n/i)%mod;
tot-=tot>=mod?mod:;
}
int ans=((six*1ll*n%mod*(n+)%mod*(*n+)%mod-two*3ll*n%mod*(n+)%mod+*n)%mod+mod)%mod;
ans=(ans-tot+mod)%mod;
h.insert(n,ans);
return ans;
} int main()
{
pre(pr=);
scanf("%d",&T);
while (T--) scanf("%d",&n),printf("%d\n",calc(n));
return ;
}

hdu5608:function的更多相关文章

  1. 原生JS:Function对象(apply、call、bind)详解

    Function对象(apply.call.bind) 原创文章,转摘请注明出处:苏福:http://www.cnblogs.com/susufufu/p/5850180.html 本文参考MDN做的 ...

  2. ES6新特性:Function函数扩展, 扩展到看不懂

    本文所有Demo的运行环境为nodeJS, 参考:让nodeJS支持ES6的词法----babel的安装和使用 : 函数的默认值: 如果有参数 ,那就用参数, 如果没有参数, 那就用默认的参数: aj ...

  3. 为什么这样写js:(function ($) { })(jQuery);

    很多时候,会这样写js,比如公司的项目里面的js页面都这样,所以我就想搞清楚意思: <script language="javascript" type="text ...

  4. 一起Polyfill系列:Function.prototype.bind的四个阶段

    昨天边参考es5-shim边自己实现Function.prototype.bind,发现有不少以前忽视了的地方,这里就作为一个小总结吧. 一.Function.prototype.bind的作用 其实 ...

  5. HDU5875:Function

    题目链接: Function 分析: icpccamp里的方法不会,我用了一个nex[]数组存储当前点ai需要取模的下一个点aj的编号j,如果aj>ai,就不用遍历. 时间为920ms 代码: ...

  6. 声明:function FileSetAttr ( const FileName : string

    对文件和文件夹都有效  FileSetAttr('D:\Administrator\Desktop\patcher\Win32\Release\config\element\update',faHid ...

  7. JavaScript 再认识(一):Function调用模式对this的影响

    近来,学习了一下<JavaScript精粹>,读到了函数这章,理清了JavaScript中this在不同调用模式下的指向. 1.Function调用模式:Function是JavaScri ...

  8. esnext:Function.prototype.toString 终于有规范了

    从 ES1 到 ES5 的这 14 年时间里,Function.prototype.toString 的规范一字未变: An implementation-dependent representati ...

  9. 自执行匿名函数: (function() { /* code */ })();

    1,常见格式:(function() { /* code */ })(); 2,解释:包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命名函数,括 ...

随机推荐

  1. AJPFX关于读取properties 配置文件 返回属性值

    :Properties的概述        * Properties 类表示了一个持久的属性集.        * Properties 可保存在流中或从流中加载.        * 属性列表中每个键 ...

  2. [转]Java中实现自定义的注解处理器

    Java中实现自定义的注解处理器(Annotation Processor) 置顶2016年07月25日 19:42:49 阅读数:9877 在之前的<简单实现ButterKnife的注解功能& ...

  3. position 位置、表单

    一.position    位置 1.只要使用了定位,必须有一个相对的参照物 2.具体定位的那个元素需加position:absolute:(绝对的)   绝对的:就是具体到某一个地方,特别详细的意思 ...

  4. 【HEVC简介】High Level Syntax

    参考文献:见<High Efficiency Video Coding (HEVC)>High Level Syntax章节 <HEVC标准介绍.HEVC帧间预测论文笔记>系列 ...

  5. fossil 使用

    ~$ fossil updateCannot figure out who you are! Consider using the --usercommand line option, setting ...

  6. 报错:org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute statement

    org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute statement; SQL [n ...

  7. Python---哈夫曼树---Huffman Tree

    今天要讲的是天才哈夫曼的哈夫曼编码,这是树形数据结构的一个典型应用. !!!敲黑板!!!哈夫曼树的构建以及编码方式将是我们的学习重点. 老方式,代码+解释,手把手教你Python完成哈夫曼编码的全过程 ...

  8. encodeURI()与decodeURI()等转码方法

    只针对文本编码 encodeURI() 只针对文本解码 decodeURI()针对文本和特殊字符的编码  encodeURIComponent()针对文本和特殊字符的解码  decodeURIComp ...

  9. selenium Select下拉框

    先来认识一下下拉框,以百度的“高级设置”为例 介绍两种方法来处理下拉框:使用click事件,使用Select方法 使用click事件 上述下拉框的源代码如下: 虽然我们可以在html源文件中看到sel ...

  10. tcpdump抓包指令使用示例

    tcpdump是一个用于截取网络分组,并输出分组内容的工具. tcpdump凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具.tcpdump提供了源代码,公开了 ...