hdu 5608 function
来源:互联网 发布:9788 微信 网络不稳定 编辑:程序博客网 时间:2024/06/06 01:58
function
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 478 Accepted Submission(s): 174
Problem Description
There is a function f(x),which is defined on the natural numbers set N,satisfies the following eqaution
N2−3N+2=∑d|Nf(d)
calulate ∑Ni=1f(i) mod 109+7.
Input
the first line contains a positive integer T,means the number of the test cases.
next T lines there is a number N
T≤500,N≤109
only 5 test cases has N>106.
Output
Tlines,each line contains a number,means the answer to the i-th test case.
Sample Input
1
3
Sample Output
2
Source
BestCoder Round #68 (div.2)
Recommend
hujie | We have carefully selected several similar problems for you: 6032 6031 6030 6029 6028
【分析】
自己明明(假装)学过杜教筛,却被一道裸题卡了好久= =
…它就是裸题吧
注意前1e6的数据自己O(nlogn)的筛一遍先,要不TLE
【代码】
//hdu#include<map>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define N 1000000#define ll long long#define inv2 500000004#define inv6 166666668#define fo(i,j,k) for(i=j;i<=k;i++)using namespace std;const int mod=1e9+7;const int mxn=1000005;map <int,int> M;int m,n,T;long long tmp[mxn];inline void init(){ int i,j; fo(i,1,N) tmp[i]=(ll)(i-1)*(i-2)%mod; fo(i,1,N) for(j=i+i;j<=N;j+=i) tmp[j]=(tmp[j]-tmp[i]+mod)%mod; fo(i,1,N) tmp[i]=(tmp[i]+tmp[i-1])%mod;}inline int solve(int n){ if(n<=N) return tmp[n]; if(M.count(n)) return M[n]; ll sum=(ll)n*(n+1)%mod*(n+n+1)%mod*inv6%mod; sum=(sum-(ll)3*n%mod*(n+1)%mod*inv2%mod)%mod; sum=(sum+n+n)%mod; for(int i=2,last=0;i<=n;i=last+1) { last=n/(n/i); sum=(sum-(ll)(last-i+1)*solve(n/i)%mod)%mod; } sum=(sum+mod)%mod; return M[n]=(int)sum;}int main(){ int i,j,T; init(); scanf("%d",&T); while(T--) { scanf("%d",&n); printf("%d\n",solve(n)); } return 0;}
- [杜教筛] HDU 5608 function
- hdu 5608 function
- hdu 5608 function
- HDU 5608 function(数论)
- HDU-Function
- Function HDU
- HDU The Euler function
- hdu --- The Euler function
- HDU 3903 - Trigonometric Function
- hdu 3903 Trigonometric Function
- HDU 5609 function
- HDU 3903 Trigonometric Function
- HDU 5674 Function
- HDU 5875 Function
- hdu 5875 Function(multiset)
- HDU 5875 Function
- HDU 5875 Function
- HDU-5875-Function
- 文章标题 codeforce 812C Sagheer and Nubian Market(二分)
- HDU 1248 寒冰王座
- js小知识
- Controlling Access to the Kubernetes API
- 插件介绍: DataTables 表格分页
- hdu 5608 function
- 54 C语言switch语句
- Python Coding 小技巧
- Cmake Practice
- 背包总结
- hdu4568
- vsftpd安装文档
- 《UNIX网络编程 卷1》 笔记: 多线程—web客户程序
- [JZOJ5129][SDOI省队集训2017]字符串