luoguP3768 简单的数学题
题目链接
题解
上面那个式子的最后一步,需要定理
用数学归纳法证明
\(S1=1^3=1^2\)
\(S2=1^3+2^3=9=3^2=(1+2)^2\)
\(S3=1^3+2^3+3^3=36=6^2=(1+2+3)^2\)
\(S4=1^3+2^3+3^3+4^3=100=10^2=(1+2+3+4)^2\)
\(S5=1^3+2^3+3^3+4^3+5^3=15^2=(1+2+3+4+5)^2\)
假设当\(n=k\)时,有\(Sk=1^3+2^3+...+k^3=(1+2+...+k)^2\)
则当\(n=(k+1)\)时,
\(S(k+1)=Sk+ak=(1+2+...+k)^2+(k+1)^3\)
\(=[k(k+1)/2]^2+(k+1)^3\)
\(=(k+1)^2[k^2/4+k+1]\)
\(=(k+1)^2[(k^2+4k+4)/4]\)
\(=(k+1)^2(k+2)^2/4\)
\(=[(k+1)(k+2)/2]^2\)
\(=(1+2+...+k+1)^2\)
对于前面那个杜教筛
代码
#include<map>
#include<cstdio>
#include<algorithm>
inline int read() {
int x = 0,f = 1;
char c = getchar();
while(c < '0' || c > '9') { if(c == '-')f = -1; c = getchar(); }
while(c <= '9' && c >= '0') x = x * 10 + c - '0',c = getchar();
return x * f;
}
#define LL long long
const int maxn = 10000000;
LL Max = maxn;
std:: map<LL,LL>M;
LL Inv6,Inv2,Phi[maxn + 7], phi[maxn + 7],mod;
bool isprime[maxn + 7];
int prime[maxn],cnt = 0;
LL fstpow(LL a,LL b) {
LL ret = 1;
for(;b;b >>= 1,a = a * a % mod)
if(b & 1) ret = ret * a % mod;
return ret;
}
void getphi() {
phi[1] = 1;
for(int i = 2;i <= Max;++ i) {
if(!isprime[i]) prime[++ cnt] = i,phi[i] = (i - 1) % mod;
for(int j = 1;j <= cnt && i * prime[j] <= Max;++ j) {
isprime[i * prime[j]] = 1;
if(i % prime[j]) phi[i * prime[j]] = 1ll * phi[i] * phi[prime[j]] % mod;
else {
phi[i * prime[j]] = 1ll * phi[i] * prime[j] % mod;
break;
}
}
}
for(int i = 1;i <= Max;++ i) Phi[i] = 1ll * phi[i] * i % mod * i % mod;
for(int i = 1;i <= Max;++ i) Phi[i] += Phi[i - 1] , Phi[i] %= mod;
}
//---------------------------------------------
LL S1(LL r) { r %= mod;return r * (r + 1) % mod * (r + r + 1) % mod * Inv6 % mod; }
LL S2(LL r) { r %= mod;return r * (r + 1) % mod * Inv2 % mod; }
LL S(LL n) {
if(n <= maxn) return Phi[n];
if(M[n]) return M[n];
LL he = S2(n) * S2(n) % mod , t;
for(LL i = 2,l;i <= n;i = l + 1) {
l = n / (n / i);
t = ((S1(l) - S1(i - 1)) % mod + mod) % mod;
he -= t * S(n / i) % mod,he %= mod;
}
return M[n] = (he + mod) % mod;
}
LL solve(LL n) {
LL res = 0;
for(LL i = 1,l,t ;i <= n;i = l + 1) {
l = n / (n / i),t = S2(n/i);
res += ((S(l) - S(i - 1) + mod) % mod * (t * t % mod)) % mod;
res %= mod;
}
return (res + mod) % mod;
}
int main() {
LL n;
scanf("%lld%lld",&mod,&n);
Max = std::min(Max,n);
Inv2 = fstpow(2,mod - 2),Inv6 = fstpow(6,mod-2);
getphi();
printf("%lld\n",solve(n));
return 0;
}
luoguP3768 简单的数学题的更多相关文章
- luoguP3768简单的数学题
大佬们绕道吧(或跳到错误&启发后下一根横线后) 这道题吧正解是莫比乌斯反演吧,但本人有一种独创玄妙的想法去偏分 这道题是让我们求这个对吧 \((\sum_{i=1}^n\sum_{j=1}^n ...
- [题解] LuoguP3768 简单的数学题
Description 传送门 给一个整数\(n\),让你求 \[ \sum\limits_{i=1}^n \sum\limits_{j=1}^n ij\gcd(i,j) \] 对一个大质数\(p\) ...
- 【数学】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$ 题解 很明显的把\( ...
- 【LG3768】简单的数学题
[LG3768]简单的数学题 题面 求 \[ (\sum_{i=1}^n\sum_{j=1}^nij\text{gcd}(i,j))\text{mod}p \] 其中\(n\leq 10^{10},5 ...
- 洛谷 P3768 简单的数学题 解题报告
P3768 简单的数学题 题目描述 由于出题人懒得写背景了,题目还是简单一点好. 输入一个整数\(n\)和一个整数\(p,\)你需要求出\((\sum_{i=1}^n\sum_{j=1}^n ijgc ...
- loj#6229 这是一道简单的数学题
\(\color{#0066ff}{ 题目描述 }\) 这是一道非常简单的数学题. 最近 LzyRapxLzyRapx 正在看 mathematics for computer science 这本书 ...
- 「洛谷P3768」简单的数学题 莫比乌斯反演+杜教筛
题目链接 简单的数学题 题目描述 输入一个整数n和一个整数p,你需要求出 \[\sum_{i=1}^n\sum_{j=1}^n (i\cdot j\cdot gcd(i,j))\ mod\ p\] ...
- P3768 【简单的数学题】
P3768 [简单的数学题] \(Ans=\sum ^{n}_{i=1}\sum ^{n}_{j=1}ijgcd(i,j)\) \(=\sum ^{n}_{i=1}\sum ^{n}_{j=1}ij\ ...
随机推荐
- 【DS】排序算法之选择排序(Selection Sort)
一.算法思想 选择排序是一种简单直观的排序算法.它的工作原理如下: 1)将序列分成两部分,前半部分是已经排序的序列,后半部分是未排序的序列: 2)在未排序序列中找到最小(大)元素,放到已排序序列的末尾 ...
- mybatis入门基础----高级映射(一对一,一对多,多对多)
阅读目录 一:订单商品数据模型 二.一对一查询 三.一对多查询 四.多对多查询 回到顶部 一:订单商品数据模型 1.数据库执行脚本 创建数据库表代码: CREATE TABLE items ( id ...
- android studio run的时候一直卡在waiting for debug
原因如下: 选择ok就可以,同时我们也可以从这里找到 平常遇到跟真机有关的问题,三步大法,1,插拔手机,2.adb kill-server;adb start-server 3.重启as
- jdk 动态代理实现对目标对象的增强
因为学习 spring框架的 AOP 所以,这里复习下动态代理,但是 spring 的底层动态代理实现是 cglib,jdk 这种呢可以引导新手入门 spring AOP 横向抽取机制 最典型的应用当 ...
- 【转载】RESTful API 设计指南
作者: 阮一峰 日期: 2014年5月22日 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). 因此,必须有一种统一的机制 ...
- 第10月第1天 storyboard uitableviewcell
1. 如图,我们在Cell的属性界面对其进行了注册,identifier 为"TableViewCell" 不需要在 ViewDidLoad 对其进行注册了,如果进行注册的话,则对 ...
- 勒索软件Locky、Tesalcrypt等使用了新的工具躲避检测
勒索软件Locky.Tesalcrypt等使用了新的工具躲避检测 今天我们发现Locky勒索软件家族使用一种新的工具来躲避检测,并且可能已经感染了很多节点. 自从我们通过AutoFocus智能威胁分析 ...
- 通过JavaScript自由切换iframe
我发现我有很大的强迫症,如果看到别人的文章没有最终的效果图,我会毫不犹豫关掉这个页面.真的很炸毛这种,让我有很不舒服的体验:所以纵使网上有类似的了,我还是写一篇给那些跟我有同样症状的人阅读. 首先来学 ...
- MySQL Dual-Master 双向同步
本文介绍的Mysql Dual-Master 复制实施方法可能不是最完美.最强大的.但是在我的应用环境下能很好的满足各项需求. 本文基于我们仅仅使用两台MySQL服务器的情况下,但是你会发现文章中介绍 ...
- URL传递的参数是UTF-8编码,在打开的页面正常显示(GB2312)的方法
URL传递的参数采用的是UTF-8编码,在打开的子页面中显示乱码, URL传递的地址形如:http://localhost/test.aspx?orgname=%E5%8B%**%**%**%**&a ...