loj6229 这是一道简单的数学题
题解:https://blog.csdn.net/Vectorxj/article/details/79094659
套路推式子,杜教筛,证明复杂度。
感谢NicoDafaGood,不在这里写题解了,式子列出来太长啦,写在本本上。
//Serene
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<map>
using namespace std;
#define ll long long
#define db double
#define For(i,a,b) for(int i=(a);i<=(b);++i)
#define Rep(i,a,b) for(int i=(a);i>=(b);--i)
const ll mod=1e9+7;
const int maxn=2e6+7,W=2e6;
ll n,g[maxn],inv6; char cc;ll ff;
template<typename T>void read(T& aa) {
aa=0;cc=getchar();ff=1;
while((cc<'0'||cc>'9')&&cc!='-') cc=getchar();
if(cc=='-') ff=-1,cc=getchar();
while(cc>='0'&&cc<='9') aa=aa*10+cc-'0',cc=getchar();
aa*=ff;
} ll pf(ll x) {return x*x%mod;} ll qp(ll x,ll k) {
ll rs=1;
while(k) {
if(k&1) rs=rs*x%mod;
k>>=1; x=x*x%mod;
}
return rs;
} ll mu[maxn],prime[maxn],totp;
bool ok[maxn];
void get_p() {
mu[1]=1;
For(i,2,W) {
if(!ok[i]) {
prime[++totp]=i;
mu[i]=-1;
}
For(j,1,totp) {
if(prime[j]>W/i) break;
ok[i*prime[j]]=1;
if(i%prime[j]) mu[i*prime[j]]=-mu[i];
else {
mu[i*prime[j]]=0;
break;
}
}
}
For(i,1,W) g[i]=((g[i-1]+mu[i]*pf(i))%mod+mod)%mod;
} inline ll f2(ll x) {return x*(x+1)%mod*(2*x+1)%mod*inv6%mod;} map<ll,ll> G,H; ll get_g(ll n) {
if(n<=W) return g[n];
ll p=G[n]; if(p) return p;
ll rs=0,lst=1,now;
for(ll i=2,j;i<=n;i=j+1) {
j=n/(n/i); now=f2(j);
rs+=get_g(n/i)*(now-lst+mod)%mod;
lst=now;
}
rs=(1-rs%mod+mod)%mod;
return G[n]=rs;
} inline ll get_h(ll n) {
if(H[n]) return H[n];
ll rs=0,lst=0,now;
for(ll i=1,j;i<=n;i=j+1) {
j=n/(n/i);
now=get_g(j);
rs+=(n/i)*(now-lst+mod)%mod;
lst=now;
}
return H[n]=rs%mod;
} ll get_f(ll n) {
ll rs=0,x;
for(ll i=1,j;i<=n;i=j+1) {
j=n/(n/i); x=n/i;
rs+=pf(((x+1)*x/2)%mod)*(get_h(j)-get_h(i-1)+mod)%mod;
}
return rs%mod;
} int main() {
read(n);
get_p(); inv6=qp(6,mod-2);
ll x=get_f(n);
printf("%lld\n",(x+n)*qp(2,mod-2)%mod);
return 0;
}
loj6229 这是一道简单的数学题的更多相关文章
- loj#6229 这是一道简单的数学题
\(\color{#0066ff}{ 题目描述 }\) 这是一道非常简单的数学题. 最近 LzyRapxLzyRapx 正在看 mathematics for computer science 这本书 ...
- 【acmm】一道简单的数学题
emm卡常 我本来写成了这个样子: #include<bits/stdc++.h> using namespace std; typedef long long LL; ; struct ...
- loj#6229. 这是一道简单的数学题 (??反演+杜教筛)
题目链接 题意:给定\(n\le 10^9\),求:\(F(n)=\sum_{i=1}^n\sum_{j=1}^i\frac{\mathrm{lcm}(i,j)}{\mathrm{gcd}(i,j)} ...
- LOJ#6229. 这是一道简单的数学题(莫比乌斯反演+杜教筛)
题目链接 \(Description\) 求\[\sum_{i=1}^n\sum_{j=1}^i\frac{lcm(i,j)}{gcd(i,j)}\] 答案对\(10^9+7\)取模. \(n< ...
- 【学术篇】luogu3768 简单的数学题(纯口胡无代码)
真是一道"简单"的数学题呢~ 反演题, 化式子. \[ ans=\sum_{i=1}^n\sum_{j=1}^nijgcd(i,j) \\ =\sum_{i=1}^n\sum_{j ...
- NYOJ 330 一个简单的数学题【数学题】
/* 题目大意:求解1/n; 解题思路:写一个输出小数的算法 关键点:怎样处理小数点循环输出 解题人:lingnichong 解题时间:2014-10-18 09:04:22 解题体会:输出小数的算法 ...
- 又一道简单题&&Ladygod(两道思维水题)
Ladygod Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit S ...
- 【数学】HPU--1037 一个简单的数学题
1037: 一个简单的数学题 [数学] 时间限制: 1 Sec 内存限制: 128 MB提交: 259 解决: 41 统计 题目描述 小明想要知道$a^b$的值,但是这个值会非常的大. 所以退而求其次 ...
- 【Luogu3768】简单的数学题(莫比乌斯反演,杜教筛)
[Luogu3768]简单的数学题(莫比乌斯反演,杜教筛) 题面 洛谷 \[求\sum_{i=1}^n\sum_{j=1}^nijgcd(i,j)\] $ n<=10^9$ 题解 很明显的把\( ...
随机推荐
- vue 计算属性实现过滤关键词
效果 html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <m ...
- 解决在Spring整合Hibernate配置tx事务管理器出现错误的问题
问题描述: Error occured processing XML 'org/aopalliance/intercept/MethodInterceptor'. See Error Log for ...
- Java开发系列-注解
概述 在JDK5之后提供了一个新特性,和类.接口同级.定义时使用的关键字是@interface.注解主要有三个作用,分别是编译检查.替代配置文件.定义注解(元注解).分析代码(用到反射).注解的本质就 ...
- 【分块】P4135 作诗
分块太暴力惹... 没做出来.看了题解qaq 分析: 两头$\sqrt{n}$暴力维护 预处理ans[i][j],sum[i][j] sum[i][j]是一个前缀和,前i块值为j的数量 ans[i][ ...
- vue_cli 安装
1.安装node 2.cmd node-v3.如果是刚刚安装输入 node-v 会成功出现版本 如果不是全局安装 过段时间输入 node-v会出现 'node' 不是内部或外部命令,也不是可运行的程序 ...
- AutoIt自动化编程(4)【转】
五.自动化操作轻松入门系列5 控件操作 然而,在真正实现自动化时仅靠上面的技术往往难以达到预期目的.下面开始进入最为重要的控件操作. 1.设置文本 在安装软件的过程中用户往往需要提供一些必需信息,比如 ...
- Nginx 和 Gunicorn 部署 Django项目
目录 Nginx 和 Gunicorn 部署 Django项目 配置Nginx 安装配置Gunicorn 通过命令行直接启动 Gunicorn 与 uwsgi 的区别,用哪个好呢 Gunicorn u ...
- php链表笔记:单链表反转
<?php /** * Created by PhpStorm. * User: huizhou * Date: 2018/12/1 * Time: 11:41 */ /** * 1.链表的反转 ...
- React的PropTYpes
React的PropTYpes和获取真实DOM 组件的属性可以接受任意值,字符串,对象,函数等等都可以.有时,我们需要一种机制,验证别人使用组件时,提供的参数是否符合要求. 组件类的PropsType ...
- UTF小记(一)
前言 十六进制(简写为hex或下标16)在数学中是一种逢16进1的进位制.一般用数字0到9和字母A到F(或a~f)表示,其中:A~F表示10~15,这些称作十六进制数字. 不同电脑系统.编程语言对于1 ...