Project Euler 728 题解
Problem 728 Circle of Coins
得到 Wallbreaker5th 的指导。
\(F\) 就是求这些环上区间(记为 \(A\))的异或线性基大小。令 \(A'_i\gets A_i\oplus A_{i+1}\)。现在求 \(\lang A'\rang\) 的线性基。如果可能从全黑和全白间转换,那么 \(\dim \lang A'\rang=\lang A\rang-1\),否则不 \(-1\)。这个转换的条件是 \(\frac k{(n,k)}\equiv 1 \pmod 2\)。
接下来观察到 \(A'_i,A'_{i+k\bmod n},A'_{i+2k\bmod n}\dots\) 覆盖到的集合对于不同等价类(\(i,i+k\dots\) 在一个等价类)无交。因此这些是独立的。
对于一个等价类去掉无法覆盖到的位置,等价类就形如 \(110000,011000,001100,\dots 100001\),有 \(\frac n{(n,k)}\) 个向量。线性基的大小是:\(\frac n{(n,k)}-1\),这是显然的。所以得到:
\]
尝试计算答案。
=\sum_{n=1}^N 2^n\sum_{d\mid n}2^{-d}\sum_{dt\mid n}\mu(t)\sum_{k=1}^{\frac n{dt}}2^{kt\bmod 2}
\]
所以可以直接卷积 \(O(n\log n)\) 解决。应该是可以 \(O(n\log\log n)\) 的,未知线性行不行。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=1e7+5,mod=1e9+7;
int pw[maxn],ipw[maxn],mu[maxn],n,F[maxn],G[maxn],H[maxn],inv[maxn];
bool isp[maxn];vector<int> pr;
int qp(int a,int b){
if(b==0)return 1;
int T=qp(a,b>>1);T=T*T%mod;
if(b&1)T=T*a%mod;
return T;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n;mu[1]=1;
for(int i=2;i<=n;i++){
if(!isp[i])mu[i]=-1,pr.push_back(i);
for(auto u:pr){
if(i*u>n)break;
isp[i*u]=1;
if(i%u==0){
mu[i*u]=0;
break;
}
mu[i*u]=-mu[i];
}
}
pw[0]=1;pw[1]=2;ipw[0]=1,ipw[1]=(mod+1)/2;
for(int i=2;i<=n;i++)pw[i]=pw[i-1]*2%mod,ipw[i]=ipw[i-1]*ipw[1]%mod;
for(int i=1;i<=n;i++)inv[i]=qp(i,mod-2);
for(int i=1;i<=n;i++)for(int j=i;j<=n;j+=i)(F[j]+=ipw[i]*mu[j/i])%=mod;
for(int i=1;i<=n;i++)G[i]=i;
for(int i=1;i<=n;i++)for(int j=i;j<=n;j+=i)(H[j]+=G[i]*F[j/i])%=mod;
int ans=0;for(int i=1;i<=n;i++)(ans+=pw[i]*H[i])%=mod;
for(int i=1;i<=n;i++)F[i]=0,H[i]=0;
for(int i=1;i<=n;i++)for(int j=i;j<=n;j+=i)(F[j]+=ipw[i]*mu[j/i]*((j/i)&1))%=mod;
for(int i=1;i<=n;i++)G[i]=(i+1)/2;
for(int i=1;i<=n;i++)for(int j=i;j<=n;j+=i)(H[j]+=G[i]*F[j/i])%=mod;
for(int i=1;i<=n;i++)(ans+=pw[i]*H[i])%=mod;
ans=(ans%mod+mod)%mod;
cout<<ans<<endl;
return 0;
}
Project Euler 728 题解的更多相关文章
- project euler 169
project euler 169 题目链接:https://projecteuler.net/problem=169 参考题解:http://tieba.baidu.com/p/2738022069 ...
- Python练习题 040:Project Euler 012:有超过500个因子的三角形数
本题来自 Project Euler 第12题:https://projecteuler.net/problem=12 # Project Euler: Problem 12: Highly divi ...
- [project euler] program 4
上一次接触 project euler 还是2011年的事情,做了前三道题,后来被第四题卡住了,前面几题的代码也没有保留下来. 今天试着暴力破解了一下,代码如下: (我大概是第 172,719 个解出 ...
- Python练习题 029:Project Euler 001:3和5的倍数
开始做 Project Euler 的练习题.网站上总共有565题,真是个大题库啊! # Project Euler, Problem 1: Multiples of 3 and 5 # If we ...
- Project Euler 9
题意:三个正整数a + b + c = 1000,a*a + b*b = c*c.求a*b*c. 解法:可以暴力枚举,但是也有数学方法. 首先,a,b,c中肯定有至少一个为偶数,否则和不可能为以上两个 ...
- Project Euler 44: Find the smallest pair of pentagonal numbers whose sum and difference is pentagonal.
In Problem 42 we dealt with triangular problems, in Problem 44 of Project Euler we deal with pentago ...
- 【Project Euler 8】Largest product in a series
题目要求是: The four adjacent digits in the 1000-digit number that have the greatest product are 9 × 9 × ...
- Project Euler 第一题效率分析
Project Euler: 欧拉计划是一系列挑战数学或者计算机编程问题,解决这些问题需要的不仅仅是数学功底. 启动这一项目的目的在于,为乐于探索的人提供一个钻研其他领域并且学习新知识的平台,将这一平 ...
- Python练习题 049:Project Euler 022:姓名分值
本题来自 Project Euler 第22题:https://projecteuler.net/problem=22 ''' Project Euler: Problem 22: Names sco ...
- Python练习题 048:Project Euler 021:10000以内所有亲和数之和
本题来自 Project Euler 第21题:https://projecteuler.net/problem=21 ''' Project Euler: Problem 21: Amicable ...
随机推荐
- 使用Nginx搭建流媒体服务器
目录 什么是流媒体服务器 Nginx如何实现流媒体服务器 为Nginx安装nginx-http-flv-module 概述 流程 操作步骤 配置流媒体服务器 使用OBS推流 使用VLC拉RTMP 使用 ...
- Node.js 文件读写
1.fs模块 在node.js中,所有文件的操作都是通过fs模块来实现的.包括文件目录的创建,删除,查询以及文件的读取,写入. 在fs模块中,所有的方法都分成同步和异步两种实现,具有sync后缀的为同 ...
- vue中this.$nextTick()
this.$nextTick()是在下一次DOM更新后执行其指定回调函数 this.$nextTick(回调函数) 使用场景:在改变数据后,要对更新后的DOM进行操作时使用
- Gitbook在Docker中安装插件的方法
别光在那百度,什么先book.json添加plugin,然后在install? 哥,你现在用的是docker哎,docker都启动不了,你如何gitbook install呢? 乖乖听我的,按我的方法 ...
- R数据分析:国产新冠口服药比辉瑞好的文章的统计做法分享
元旦前在人民日报中央厨房上看到一篇文章,叫做"比肩辉瑞的国产新冠药物VV116,是这样研制和临床试验的",想来就把文献原文找来读了读,写下本文分享给大家,本文主要关注文章的正文中主 ...
- 【网站搭建】Docsify+Gittalk的配置过程记录分享。原创!
Gittalk 配置 这个不一定最先配置,我也不建议你最先配置这个,这个最好最后配置. 萌狼蓝天把这个的配置写在第一条,是因为我在这折腾了很久,就是因为网上抄来抄去的答案,除了迷惑萌狼蓝天难以给萌狼蓝 ...
- PpcProcessResult
@Data @Accessors(chain = true) public class PpcProcessResult { public static volatile int globalThre ...
- Mac安装CMake
官网下载CMake: 传送门:https://cmake.org/download/ image.png 安装完打开: image.png 选择Tools-->How to instal ...
- Qt编写的项目作品11-带频谱的音乐播放器
一.功能特点 可获取整个声音文件采样值数据 可实时获取当前播放位置的采样值数据 可设置采样的步长和数量 可开始播放/暂停播放/停止播放 多线程处理,超流畅 可设置当前播放位置 可设置和调节音量 支持任 ...
- Qt音视频开发43-人脸识别服务端
一.前言 上一篇文章写道人脸识别客户端程序,当然要对应一个服务端程序,客户端才能正常运行,毕竟客户端程序需要与服务端程序进行交互他才能正常工作.通常人脸识别服务端程序需要和人脸识别的相关处理库在一起, ...