2018ACM四川省赛G.Grisaia(超棒的杜教筛好题)

整理的算法模板合集: ACM模板

点我看算法全家桶系列!!!

实际上是一个全新的精炼模板整合计划


G. Grisaia(灰色的果实好耶《灰色的果实(The Fruit of Grisaia)》)

Weblink

https://www.oj.swust.edu.cn/problem/show/2810

Problem

计算:

a n s = ∑ i = 1 n ∑ j = 1 i ( n   m o d ( i × j ) ) ans =\sum^n_{i=1}\sum^i_{j=1} (n\ mod (i \times j)) ans=i=1nj=1i(n mod(i×j))

其中 T ≤ 5 , n ≤ 1 0 11 T\le 5, n\le 10^{11} T5,n1011

Solution

使用模的展开式将上述和式展开后,显然套路枚举 k = i × j k=i\times j k=i×j,由于 n ≤ 1 0 11 n\le10^{11} n1011,杜教筛即可。

筛出:

f ( x ) = x × d ( x ) g ( x ) = x × μ ( x ) f(x)=x\times d(x)\\g(x)=x \times \mu(x) f(x)=x×d(x)g(x)=x×μ(x)

然后整除分块即可。

在这里插入图片描述

在这里插入图片描述
Hint

注意 n ≤ 1 0 11 n\le10^{11} n1011,中间多处会爆 long long,强转成 __int128 即可。

(因为这个wa了8发hhh,五颜六色的)
在这里插入图片描述

Code

#include <bits/stdc++.h>
   
using namespace std;
#define int long long
#define ll __int128
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁凡さん

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值