hdu5608:function
$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的更多相关文章
- 原生JS:Function对象(apply、call、bind)详解
Function对象(apply.call.bind) 原创文章,转摘请注明出处:苏福:http://www.cnblogs.com/susufufu/p/5850180.html 本文参考MDN做的 ...
- ES6新特性:Function函数扩展, 扩展到看不懂
本文所有Demo的运行环境为nodeJS, 参考:让nodeJS支持ES6的词法----babel的安装和使用 : 函数的默认值: 如果有参数 ,那就用参数, 如果没有参数, 那就用默认的参数: aj ...
- 为什么这样写js:(function ($) { })(jQuery);
很多时候,会这样写js,比如公司的项目里面的js页面都这样,所以我就想搞清楚意思: <script language="javascript" type="text ...
- 一起Polyfill系列:Function.prototype.bind的四个阶段
昨天边参考es5-shim边自己实现Function.prototype.bind,发现有不少以前忽视了的地方,这里就作为一个小总结吧. 一.Function.prototype.bind的作用 其实 ...
- HDU5875:Function
题目链接: Function 分析: icpccamp里的方法不会,我用了一个nex[]数组存储当前点ai需要取模的下一个点aj的编号j,如果aj>ai,就不用遍历. 时间为920ms 代码: ...
- 声明:function FileSetAttr ( const FileName : string
对文件和文件夹都有效 FileSetAttr('D:\Administrator\Desktop\patcher\Win32\Release\config\element\update',faHid ...
- JavaScript 再认识(一):Function调用模式对this的影响
近来,学习了一下<JavaScript精粹>,读到了函数这章,理清了JavaScript中this在不同调用模式下的指向. 1.Function调用模式:Function是JavaScri ...
- esnext:Function.prototype.toString 终于有规范了
从 ES1 到 ES5 的这 14 年时间里,Function.prototype.toString 的规范一字未变: An implementation-dependent representati ...
- 自执行匿名函数: (function() { /* code */ })();
1,常见格式:(function() { /* code */ })(); 2,解释:包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命名函数,括 ...
随机推荐
- 001.JS特效
一.Js实现单行文本的滚动 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http ...
- MSComDlg.CommonDialog服务器不能创建对象错误的解决
作者:朱金灿 来源:http://blog.csdn.net/clever101 在JavaScript中弹出打开文件对话框,代码如下: var fileOpenDlg = new ActiveXOb ...
- 5款好用的mysql客户端
1. EMS SQL Manager for MySQL 是一款高性能MySQL数据库服务器系统的管理和开发工具.它支持从MySQL 3.23到6.0的任一版本,并支持最新版本的MySQL的特点,包括 ...
- Android(java)学习笔记182:多媒体之撕衣服的案例
1.撕衣服的案例逻辑: 是两者图片重叠在一起,上面我们看到的是美女穿衣服的图片,下面重叠(看不到的)是美女没有穿衣服的图片.当我们用手滑动画面,上面美女穿衣服的图片就会变成透明,这样的话下 ...
- JOIN和UNION的区别
join 是两张表根据条件相同的部分合并生成一个记录集. SELECT Websites.id, Websites.name, access_log.count, access_log.dateFRO ...
- 【转】密码学 :CSP的概念
转:[密码学]CSP的概念 CSP加密服务提供者(Cryptographic Service Provider)具有一下几个特点: CSP是真正执行密码运算的独立模块 物理上一个CSP由两部分组成:一 ...
- C程序(1)
- python关于入参中,传入的是指针还是引用
偶然看到别人的代码,发现有的会传入参数之后,做一次copy,试验一下,关于入参中,传入的是指针还是引用先说自己的结论:1.如果传入的是简单的类型,那么传入应该是引用的数值,2.假如传入的是df这种类型 ...
- jquery点击tr换背景颜色
jquery点击tr换tr的背景颜色,table的id为db-list1jQuery(function() { jQuery("#db-list1 tr").click( func ...
- CodeForces - 1105D Kilani and the Game(多源BFS+暴力)
题目: 给出一张游戏地图和每个玩家的位置,每次能移动的步数.p个玩家轮流移动占领地图中的格子(当格子已经被占领时就不能在占领了)在每个玩家都不能移动时游戏结束. 问在游戏结束后,每个玩家占领的格子的数 ...