2022.9.30 闲话
Preface
不要管这个叫 Preface 的 H1 .
呃……
(鼠标)
我的 B 站 20 粉丝了!
\Apjifengc/
……
我在其他网站的粉丝远远是达不到这么多的……
……
……(话题是)我的黑历史!
(背的不对见谅,有部分省略)
原文 .
一个普及难度的题,Solution 可以写得多冗长?
给一个序列 ,求
.
异或搁哪呐?
首先推一波柿子
记
则原式就等于
先处理出
然后 暴力算第一个 ,第二个 每次求完后将 即可 .
时空复杂度 .
伪代码:
C++ 代码:
using namespace std;
const int N=1e6,MOD=1e9+7;
typedef long long ll;
int n,a[N];
ll S[N],ans,R;
inline __attribute__((always_inline)) ll sum(int l,int r){return ((S[r]-S[l-1])%MOD+MOD)%MOD;}
// 这个 inline __attribute__((always_inline)) 是加速用的,可以忽略 qwq
int main()
{
scanf("%d",&n);
for (int i=1;i<=n;i++){scanf("%d",a+i); S[i]=(S[i-1]+a[i])%MOD;}
for (int i=2;i<=n;i++) R=(R+a[i]*sum(i+1,n)%MOD)%MOD;
for (int i=1;i<=n;i++){ans=(ans+a[i]*R%MOD)%MOD; R=((R-a[i+1]*sum(i+2,n))%MOD+MOD)%MOD;}
printf("%lld\n",6*ans%MOD);
return 0;
}
发现以前写的东西还挺好玩的 hszxoj 规则类怪谈,SCP-1919810,? .
闲话太水也不好,放个题吧,有人说是洛谷上那个叫约数个数和的题弱化版,额好像关系不是很大啊 /youl
好像当时出的时候是根据 3B1B 的感觉出的 .
以下是正文 desu!
正文
题目描述
设
其中 为互不相同的素数, 是大于 的整数 .
则令
给定 ,求:
答案对 取模 .
- Subtask 1 (10 pts): .
- Subtask 2 (30 pts): .
- Subtask 3 (20 pts):,.
- Subtask 4 (40 pts): .
对于所有数据 ,, .
题解
Subtask 1 & Subtask 2
乱搞 / 暴力
Subtask 3
令 ,那么推一下这个 是啥
其中 是 的所有约数的 次方和 .
所以问题就是要求
暴力求就可过这一档了 .
Subtask 4
是积性函数,可以线性筛,然后就可以得到满分了 .
或者写 调和级数算法也行 .
Bonus
显然这么经典的问题是有更优做法的 .
众所周知的,有 ( 是狄利克雷卷积)
于是,
用杜教筛就可以做出 .
函数和 的前缀和非常好做,前者杜教筛一下,后者用公式即可 .
时间复杂度大概就是 ,不知道这里用 对不对 .
更优做法我就不会了 .
要是想跑的快快的可以分段打表 .
是为仅取非负整数值的随机变量,定义其 PGF 为
则有:
- .
- .
- .
- .
以下是博客签名,正文无关
本文来自博客园,作者:yspm,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/16745914.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】