HDU 5608 - function

套路题

图片来自:

https://blog.csdn.net/V5ZSQ/article/details/52116285

杜教筛思想,根号递归下去。

先搞出前缀和g(n)=∑f(i)

然后寻求递归。∑g(n/i)=常数

这一步要运用给出的f(i)的关系,干掉f

具体:

向枚举约数转化,不断交换求和,交换统计贡献的部分。通过数学意义变成枚举约数

然后类似杜教筛即可

f的前1000000项,调和级数枚举约数减去贡献

#include<bits/stdc++.h>
#define reg register int
#define il inline
#define fi first
#define se second
#define mk(a,b) make_pair(a,b)
#define numb (ch^'0')
using namespace std;
typedef long long ll;
template<class T>il void rd(T &x){
char ch;x=;bool fl=false;
while(!isdigit(ch=getchar()))(ch=='-')&&(fl=true);
for(x=numb;isdigit(ch=getchar());x=x*+numb);
(fl==true)&&(x=-x);
}
template<class T>il void ot(T x){x/?ot(x/):putchar(x%+'');}
template<class T>il void prt(T a[],int st,int nd){for(reg i=st;i<=nd;++i) printf("%lld ",a[i]);putchar('\n');} namespace Miracle{
const int mod=1e9+;
const int M=+;
int t,n;
int f[M];
int qm(int x,int y){
int ret=;while(y){
if(y&) ret=(ll)ret*x%mod;x=(ll)x*x%mod;y>>=;
}return ret;
}
int ad(int x,int y){
return x+y>=mod?x+y-mod:x+y;
}
void sieve(int n){
for(reg i=;i<=n;++i) f[i]=(ll)(i-)*(i-)%mod;
for(reg i=;i<=n;++i){
for(reg j=i+i;j<=n;j+=i){
f[j]=ad(f[j],mod-f[i]);
}
}
for(reg i=;i<=n;++i) f[i]=ad(f[i],f[i-]);
}
map<int,int>mp;
int inv6;
int sol(int n){
if(n<=M-) return f[n];
if(mp.find(n)!=mp.end()) return mp[n];
ll ret=(ll)(n-)*n%mod*(*n-)%mod*inv6%mod;
ret=ad(ret,mod-(ll)n*(n-)/%mod);
for(reg i=,x=;i<=n;i=x+){
x=(n/(n/i));
ret=ad(ret,mod-(ll)(x-i+)*sol(n/i)%mod);
}
return mp[n]=ret;
}
int main(){
sieve(M-);
inv6=qm(,mod-);
rd(t);
while(t--){
rd(n);printf("%d\n",sol(n));
}
return ;
} }
signed main(){
Miracle::main();
return ;
} /*
Author: *Miracle*
Date: 2019/3/8 11:16:20
*/

HDU 5608 - function的更多相关文章

  1. HDU 5608 function [杜教筛]

    HDU 5608 function 题意:数论函数满足\(N^2-3N+2=\sum_{d|N} f(d)\),求前缀和 裸题-连卷上\(1\)都告诉你了 预处理\(S(n)\)的话反演一下用枚举倍数 ...

  2. ●HDU 5608 function

    题链: http://acm.hdu.edu.cn/showproblem.php?pid=5608 题解: 莫比乌斯反演,杜教筛 已知$$N^2-3N+2=\sum_{d|N} f(d)$$ 多次询 ...

  3. [HDU 5608]Function(莫比乌斯反演 + 杜教筛)

    题目描述 有N2−3N+2=∑d∣Nf(d)N^2-3N+2=\sum_{d|N} f(d)N2−3N+2=∑d∣N​f(d) 求∑i=1Nf(i)\sum_{i=1}^{N} f(i)∑i=1N​f ...

  4. HDU 5608 function(莫比乌斯反演 + 杜教筛)题解

    题意: 已知\(N^2-3N+2=\sum_{d|N}f(d)\),求\(\sum_{i=1}^nf(i) \mod 1e9+7\),\(n\leq1e9\) 思路: 杜教筛基础题? 很显然这里已经设 ...

  5. HDU 6038 - Function | 2017 Multi-University Training Contest 1

    /* HDU 6038 - Function [ 置换,构图 ] 题意: 给出两组排列 a[], b[] 问 满足 f(i) = b[f(a[i])] 的 f 的数目 分析: 假设 a[] = {2, ...

  6. 洛谷P1464 Function  HDU P1579 Function Run Fun

    洛谷P1464 Function HDU P1579 Function Run Fun 题目描述 对于一个递归函数w(a,b,c) 如果a≤0 or b≤0 or c≤0就返回值11. 如果a> ...

  7. HDU 5875 Function 【倍增】 (2016 ACM/ICPC Asia Regional Dalian Online)

    Function Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  8. 2017 Multi-University Training Contest - Team 1 1006&&HDU 6038 Function【DFS+数论】

    Function Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...

  9. HDU 5875 Function 优先队列+离线

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5875 Function Time Limit: 7000/3500 MS (Java/Others) ...

随机推荐

  1. 《坦克世界》1.0+:使用 CPU 优化的图形和物理丰富用户体验

    本文以<坦克世界>为例,介绍 Wargaming 使用 CPU 多核和 CPU 单指令多数据 (SIMD) 功能显著提升游戏沉浸式体验的创新方法.我们以英特尔® 线程构建模块(英特尔® T ...

  2. Git版本控制器使用总结性梳理

    Git为何物?Git 是什么?大家肯定会说不就是版本控制器嘛,是的Git是目前世界上最先进的分布式版本控制系统(没有之一).1)那什么是版本控制器?举个简单的例子,比如我们用Word写文章,那你一定有 ...

  3. 代码规范(RL-TOC)用更合理的方式写 JavaScript

    代码可以改变世界 不规范代码可以毁掉世界 只有先学会写规范的代码,才可以走的更远 编程语言之间有很多编程规范都是通用: 命名 不要用语言不明的缩写,不用担心名字过长,名字一定要让别人知道确切的意思; ...

  4. Being a (amateurish) team:团队开发体会

    0x00 Being a (amateurish) team This is the process of changing hydrogen into breathable oxygen, and ...

  5. Java计算器(结对)

    一:题目简介 我们要做的是一个多功能计算器,Java程序编辑器是:图形界面.线程.流与文件等技术的综合应用. 图形界面的实现:考虑到简单.实用.高效等特点,就选择了Swing来完成实现,在选择组件上, ...

  6. Java基础知识中的注意事项

    设置Java的相关路径,举例: JAVA_HOME  -->   C:\Program Files\Java\jdk1.8.0_191 Path --->   C:\Program Fil ...

  7. js拷贝实例;

    ,]]; // var arr2 =arr1.slice(0); // arr1[0] ="z"; // arr1[2][0] = "v"; // consol ...

  8. php多进程pcntl学习-僵尸进程

    上个月写的文章,php多进程pcntl学习(一)现在发现并不完整,因为虽然提到了关闭子进程,但是并没有回收子进程,简单的说就是当子进程比父进程先退出,而父进程没对其做任何处理的时候,子进程将会变成僵尸 ...

  9. ODAC 下载

    官网地址: https://www.oracle.com/technetwork/topics/dotnet/downloads/odacdev-4242174.html 官方说说明: ODAC 18 ...

  10. cmd常用

    npm install -g npm              npm就自动为我们更新到最新版本 npm install -g cnpm --registry=https://registry.npm ...