博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
吉首大学2019年程序设计竞赛(重现赛)D - 数列求和(嘤雄难度)
阅读量:5325 次
发布时间:2019-06-14

本文共 2108 字,大约阅读时间需要 7 分钟。

 

链接:

$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 
#define ll long longusing namespace std;const ll MOD = 1E9 + 7;const ll inv2 = 500000004;const ll inv6 = 166666668;ll n, m;ll fac[10000];inline ll sqr(ll x) { return (x % MOD * (x + 1) % MOD * (2 * x + 1) % MOD * inv6) % MOD;}inline ll f(ll x) { return ((x + 1) * 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 = 0; for (int i = 2; i * i <= m; i++) { if (m % i == 0) { fac[cnt++] = i; while (m % i == 0) m /= i; } } if (m != 1) fac[cnt++] = m; ll ans = cal(1); ll ans0 = 0; for (int i = 1; i < (1 << cnt); i++) { ll temp = 1; int sum = 0; for (int j = 0; j < cnt; j++) { if (i & (1 << j)) { sum++; temp *= fac[j]; } } if (sum & 1) { ans0 = (ans0 + cal(temp)) % MOD; } else { ans0 = (ans0 - cal(temp) + MOD) % MOD; } } ans = (ans - ans0 + MOD) % MOD; printf("%lld\n", ans); } return 0;}
View Code

转载于:https://www.cnblogs.com/Mrzdtz220/p/11188129.html

你可能感兴趣的文章
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
泛型子类_属性类型_重写方法类型
查看>>
eclipse-将同一个文件分屏显示
查看>>
mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法!
查看>>
poj2388---求奇数个数字的最中间的数
查看>>
对闭包的理解
查看>>
java.lang.OutOfMemoryError异常解决方法
查看>>
Css让文字自适应Table宽度[转]
查看>>
[Javascript] Flattening nested arrays: a little exercise in functional refactoring
查看>>
练习10-1 使用递归函数计算1到n之和(10 分
查看>>
使用maven构建多模块项目,分块开发
查看>>
Oracle MySQL yaSSL 不明细节缓冲区溢出漏洞2
查看>>
windows编程ASCII问题
查看>>
.net webService代理类
查看>>
C#高级编程笔记(一)
查看>>
Code Snippet
查看>>
MFC模态对话框程序不响应OnIdle
查看>>
Node.js Express项目搭建
查看>>
zoj 1232 Adventure of Super Mario
查看>>
Oracle 序列的应用
查看>>