From ee5d06b78c87e01ddf0583983175a7969b2bc5b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Thu, 14 Dec 2023 11:14:41 +0800 Subject: [PATCH] 'commit' --- TangDou/Topic/SpareTire.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/TangDou/Topic/SpareTire.cpp b/TangDou/Topic/SpareTire.cpp index 59ba4eb..5899380 100644 --- a/TangDou/Topic/SpareTire.cpp +++ b/TangDou/Topic/SpareTire.cpp @@ -7,10 +7,13 @@ const int Six = 166666668; /// 6,2关于mod的乘法逆元 const int Two = 500000004; const int mod = 1e9 + 7; /// 尽量这样定义mod ,减少非必要的麻烦 -inline int Mod(int a, int b) { +int Mod(int a, int b) { return (a % mod) * (b % mod) % mod; } -inline int F(int k, int n) { /// 求(k*n)^2+k*n + +// 递推函数可以用通项式直接求解 +// 通项式:a[kn]=(k*n)^2+k*n +int F(int k, int n) { return (Mod(k, k) * Mod(Mod(n, n + 1), Mod(n + n + 1, Six)) % mod + Mod(Mod(1 + n, n), Mod(k, Two))) % mod; } @@ -23,7 +26,7 @@ signed main() { int n, m; while (cin >> n >> m) { - int sum = F(1, n), ans = 0; /// 计算总和sum + int sum = F(1, n), ans = 0; // 计算总和sum int t = m; // 复制出来 for (int i = 2; i * i <= t; i++) {