链接:https://ac.nowcoder.com/acm/contest/992/D

$a_{i}=\dfrac {3a_{i-1}-a_{i-2}}{2}+i+1$

移项再化一下

$a_{i}-a_{i-1}-2i=\dfrac {1}{2}\left[ a_{i-1}-a_{i-2}-2\left( i-1\right) \right]$

令$t_{i}=t_{i}=a_{i}-a_{i-1}-2i$

由于$a_{0}=0$ $a_{1}=2$ 所以$t_{1}=0$

所以$t_{i}=0$ $(i\geq 1)$

即$a_{i}=a_{i-1}+2i$

$\left\{\begin{matrix}
 & a_{i}=a_{i-1}+2i& \\
 & \cdots & \\
 & a_{1}=a_{0}+2\times 1 &
\end{matrix}\right.$

$i$个式子相加得到

$S_{i}=S_{i-1}+i\left( i+1\right)$

所以$a_{i}=i^{2} + i$

也可以打表,但我感觉打表会不会更难看出来?

现在可以先把1~$n$的总和先求出来,再减去与$m$不互质的和就是答案了。

预处理出$m$的素因子,然后枚举一下所有组合的情况(由于$m$随机生成,素因子个数不会很多)

每一个素因子乘积的组合$k$有$\lfloor \dfrac {n}{k}\rfloor$个

然后容斥一下

$S_{n}=\dfrac {n\cdot \left( n+1\right) \left( 2n+1\right) }{6}$

$k^{2}+\left( 2k\right) ^{2}+\ldots +\left( \lfloor \dfrac {n}{k}\rfloor k\right) ^{2}$

把$k^{2}$提出来就又是一个平方和了

1~$i$的和同理

#include <bits/stdc++.h>
#define ll long long
using namespace std; const ll MOD = 1E9 + ;
const ll inv2 = ;
const ll inv6 = ; ll n, m;
ll fac[]; inline ll sqr(ll x) {
return (x % MOD * (x + ) % MOD * ( * x + ) % MOD * inv6) % MOD;
} inline ll f(ll x) {
return ((x + ) * x % MOD * inv2 % MOD) % MOD;
} inline ll cal(ll temp) {
ll k = n / temp;
return (sqr(k) * temp % MOD * temp % MOD + f(k) * temp % MOD) % MOD;
} int main() {
while (~scanf("%lld%lld", &n, &m)) {
int cnt = ;
for (int i = ; i * i <= m; i++) {
if (m % i == ) {
fac[cnt++] = i;
while (m % i == ) m /= i;
}
}
if (m != ) fac[cnt++] = m;
ll ans = cal();
ll ans0 = ;
for (int i = ; i < ( << cnt); i++) {
ll temp = ;
int sum = ;
for (int j = ; j < cnt; j++) {
if (i & ( << j)) {
sum++;
temp *= fac[j];
}
}
if (sum & ) {
ans0 = (ans0 + cal(temp)) % MOD;
} else {
ans0 = (ans0 - cal(temp) + MOD) % MOD;
}
}
ans = (ans - ans0 + MOD) % MOD;
printf("%lld\n", ans);
}
return ;
}

最新文章

  1. Css3新特性总结之边框与背景(二)
  2. 大白话讲解Promise(三)搞懂jquery中的Promise
  3. C# Socket异步聊天例子
  4. MongoDB-分片片键
  5. php预定义变量,超全局变量,魔术方法,特殊函数变量使用
  6. MyEclipse常用设置
  7. Asp.Net Web API 2第六课——Web API路由和动作选择
  8. GoDaddy自动续费信用卡被扣款后的退款方法
  9. elasticsearch + hive环境搭建
  10. CDN学习笔记一(CDN是什么?)
  11. 全文检索引擎 Lucene.net
  12. C++运行字符编码于MSVC和GCC之间的区别
  13. Clean Code读书笔记
  14. LINQPad 调试
  15. [ios2]iOS 图片与内存 【转】
  16. 如何在IIS8.5上面部署php
  17. 使用mysql_Front链接mysql,出现警告access denied for user &#39;&#39;@&#39;localhost&#39;
  18. jQuery实现web页面固定列表搜索
  19. jQuery的deferred对象实战应用(附:Exchar动态多条数据展示并在topic展示详细数据)
  20. wordcount源代码详解

热门文章

  1. [转帖]dfs和bfs
  2. C++函数形参与实参交换
  3. golang微服务框架go-micro 入门笔记2.3 micro工具之消息接收和发布
  4. Python 基础 格式化输出
  5. NOI2019 退役记
  6. Java 函数式编程和Lambda表达式
  7. Hive学习笔记(一)——概述
  8. Mycat使用--分库分表和读写分离
  9. springmvc 注解二
  10. 【转载】C#中使用double.Parse方法将字符串转换为双精度double类型