先考虑化简f函数

发现,f函数可以写成一个递归式,化简后可以先递推求出所有f函数的值,

所以可以先求出所有S函数的值,对于询问,O(1)回答

代码:

  //File Name: hdu5382.cpp
//Author: long
//Mail: 736726758@qq.com
//Created Time: 2016年10月24日 星期一 11时03分18秒 #include <stdio.h>
#include <string.h>
#include <algorithm>
#include <iostream>
#define LL long long
using namespace std;
const int MAXN = + ;
const int MOD = ;
LL S[MAXN],f[MAXN],g[MAXN],h[MAXN];
int prime[MAXN];
bool check[MAXN];
void cal_h(){
memset(check,false,sizeof(check));
h[] = ;
int tot = ;
for(int i=;i<MAXN;i++){
if(!check[i]){
prime[tot++] = i;
h[i] = ;
}
for(int j=;j<tot;j++){
if((LL)i * prime[j] >= MAXN) break;
check[i * prime[j]] = true;
if(i % prime[j] == ){
h[i * prime[j]] = h[i];
break;
}
else
h[i * prime[j]] = h[i] * % MOD;
}
}
}
void cal_g(){
for(int i=;i<MAXN;i++){
for(int j=i;j<MAXN;j+=i){
(g[j] += h[j / i - ]) %= MOD;
}
}
}
void cal_f(){
for(int i=;i<MAXN;i++)
(f[i] = f[i-] + * i - - g[i - ] + MOD) %= MOD;
}
void cal_S(){
for(int i=;i<MAXN;i++)
S[i] = (S[i-] + f[i]) % MOD;
}
void init(){
cal_h();
cal_g();
cal_f();
cal_S();
}
int main(){
init();
int t,n;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
printf("%lld\n",S[n]);
}
return ;
}

hdu 5382 GCD?LCM!的更多相关文章

  1. 2015多校第8场 HDU 5382 GCD?LCM! 数论公式推导

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5382 题意:函数lcm(a,b):求两整数a,b的最小公倍数:函数gcd(a,b):求两整数a,b的最 ...

  2. hdu 5382 GCD?LCM! - 莫比乌斯反演

    题目传送门 传送门I 传送门II 题目大意 设$F(n) = \sum_{i = 1}^{n}\sum_{j = 1}^{n}\left [ [i, j] + (i, j) \geqslant n \ ...

  3. 数学--数论--HDU 5382 GCD?LCM?(详细推导,不懂打我)

    Describtion First we define: (1) lcm(a,b), the least common multiple of two integers a and b, is the ...

  4. hdu 5584 gcd/lcm/数学公式

    input T 1<=T<=1000 x y output 有多少个起点可以走n(n>=0)步走到(x,y),只能从(x,y)走到(x,y+lcm(x,y))/(x+lcm(x,y) ...

  5. 【HDU 5382】 GCD?LCM! (数论、积性函数)

    GCD?LCM! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...

  6. HDU 4497 GCD and LCM(数论+容斥原理)

    GCD and LCM Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total ...

  7. HDU 4497 GCD and LCM 素因子分解+ gcd 和 lcm

    题意: 给两个数,lll 和 ggg,为x , y , z,的最小公倍数和最大公约数,求出x , y , z 的值有多少种可能性 思路: 将x , y , z进行素因子分解 素因子的幂次 x a1 a ...

  8. hdu-3071 Gcd & Lcm game---质因数分解+状态压缩+线段树

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3071 题目大意: 给定一个长度为n的序列m次操作,操作的种类一共有三种 查询 L :查询一个区间的所 ...

  9. Mathematics:GCD & LCM Inverse(POJ 2429)

    根据最大公约数和最小公倍数求原来的两个数 题目大意,不翻译了,就是上面链接的意思. 具体思路就是要根据数论来,设a和b的GCD(最大公约数)和LCM(最小公倍数),则a/GCD*b/GCD=LCM/G ...

随机推荐

  1. Javascript 特效(一)返回顶部

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  2. Servlet3.0 jsp跳转到Servlet 出现404错误的路径设置方法

    最近又遇到了这种问题,百度了好久,发现有人说要在action的路径里面写Servlet文件的绝对路径,比如说,单独打开servlet的地址为http://localhost:8080/TomcatTe ...

  3. 玩玩cordova(MAC安装环境)

    PhoneGap/cordova为代表的基于HTML5开发iOS/Android应用的技术,大大降低了手机App的开发门槛.虽然目前与原生的Object-C/Java开发的应用在性能上还有差距,但是对 ...

  4. 关于URI URL URN

    刚琢磨.整理了关于escape.encodeURIComponent.encodeURI的知识.突然又对URI有点模糊了,遂整理了以下资源 : 资源一: URL,URI 和URN 的举例理解 资源二: ...

  5. 通过gradle来导入jar包

    1.通过gradle配置第三方jar包 我们看到,每个module都有一个build.gradle文件,它其实是对应module的配置文件.关于build.gradle文件中具体内容的含义,我们将在最 ...

  6. Qt错误总结

    Qt时常发生的错误总结 1,代码有问题,但是它却告诉你别的地方-比头文件不能读取,贼蛋疼! 2,库文件问题,会出现一大堆错误,这个时候就要好好检查库文件了. 3,版本问题,Qt版本升级时有些东西会变化 ...

  7. cloudera manager安装spark后使用spark shell编写基于scala的world count

    val file = sc.textFile("hdfs://zhcloudil-lcnode04:8020/user/cloudil/wc_spark.txt") val cou ...

  8. Win32隐藏输出console窗口

    #include <Windows.h> void HideConsole() { ::ShowWindow(::GetConsoleWindow(), SW_HIDE); } void ...

  9. C语言结构体位域

    demo: typedef struct { int a:2; int b:2; int c:1; }test; int main() { test t; t.a=1; t.b=3; t.c=1; / ...

  10. OpenCV MAT基本图像容器

    参考博客: OpenCv中cv::Mat和IplImage,CvMat之间的转换 Mat - 基本图像容器 Mat类型较CvMat和IplImage有更强的矩阵运算能力,支持常见的矩阵运算(参照Mat ...