首页 > 其他分享 >CF859G Circle of Numbers 解题报告

CF859G Circle of Numbers 解题报告

时间:2022-10-11 20:35:46浏览次数:67  
标签:frac gcd int mid CF859G Numbers Circle prod omega

CF859G Circle of Numbers 解题报告:

更好的阅读体验

题意

有一个长度为 \(n\) 的圆环,每个整点位置都有一个整数 \(\in\{0,1\}\),你可以选择一个 \(c\mid n\) 以及一个 \(d<c\),将所有 \(kc+d\) 位置的数同时加、减一个实数 \(r\),求是否可以将所有数字归零。

\(1\leqslant n\leqslant 10^5\)。

分析

没做过这种类型的题。。。也不太会分圆多项式那一套理论。

首先将圆环的状态(从 \(0\) 开始)写成生成函数 \(F(x)\),那么一次操作就是将 \(F(x)\) 加上 \(fx^c\frac{1-x^n}{1-x^d}\)。

考虑多项式环上的裴蜀定理,那么合法当且仅当 \(\gcd_{d\mid n}\{\frac{1-x^n}{1-x^d}\}\mid F(x)\)。

利用单位根展开:

\[\frac{1-x^n}{1-x^d}=\frac{\prod_{k=0}^{n-1}(x-\omega_n^k)}{\prod_{k=0}^{d-1}(x-\omega_d^k)}=\prod_{k=0}^{n-1}[\frac{n}{d}\not\mid k](x-\omega_n^k) \]

\[P(x)=\gcd_{d\mid n}\{\frac{1-x^n}{1-x^d}\}=\prod_{k=0}^{n-1}[\gcd(k,n)=1](x-\omega_n^k) \]

互素的条件很难处理,于是考虑其补:\(Q(x)=\prod_{k=0}^{n-1}[\gcd(k,n)>1](x-\omega_n^k)\),由于 \(P(x)Q(x)=x^n-1\),所以若 \(P(x)\mid F(x)\) 则有 \(x^n-1\mid F(x)Q(x)\),这就是一个循环卷积。

与 \(Q(x)\) 卷积仍然很麻烦,但我们只需利用 \(Q(x)\) 不包含 \([\gcd(k,n)=1](x-\omega_n^k)\) 的性质,写出 \(R(x)=\prod_{p\in\text{Prime},p\mid n}(x^{\frac np}-1)\)。判别方式不变,而卷积复杂度降至 \(O(n\omega(n))\),可以通过。

代码

#include<stdio.h>
#include<iostream>
using namespace std;
const int maxn=100005;
int n,ans;
int f[maxn],g[maxn];
string s;
int main(){
	scanf("%d",&n),cin>>s;
	for(int i=0;i<n;i++)
		f[i]=s[i]-48;
	for(int v=n,p=2;p<=v;p++)
		if(v%p==0){
			while(v%p==0)
				v/=p;
			for(int i=0;i<n;i++)
				g[i]=f[(i-n/p+n)%n]-f[i];
			for(int i=0;i<n;i++)
				f[i]=g[i];
		}
	for(int i=0;i<n;i++)
		ans|=f[i];
	puts(ans==0? "YES":"NO");
	return 0;
}

标签:frac,gcd,int,mid,CF859G,Numbers,Circle,prod,omega
From: https://www.cnblogs.com/xiaoziyao/p/16782444.html

相关文章

  • CF963E Circles of Waiting(高斯消元,主元法)
    CF963ECirclesofWaiting平面直角坐标系上有一个点,开始在\((0,0)\),每秒钟这个点都会随机移动:如果它在\((x,y)\),下一秒它去\(4\)个方向的概率为\(p_0,p_1,p_2,......
  • CF1081E Missing Numbers
    大致是官方题解,因为题解里没有\(\mathcal{O(x\logx)}\)的做法。设\(x\)偶数项值域为\(V\)。设\(s_i=t_i^2=\sum\limits_{j=1}^{i}x_i\),随后\(V\gex_{2i......
  • [Oracle] LeetCode 2 Add Two Numbers
    Youaregiventwonon-emptylinkedlistsrepresentingtwonon-negativeintegers.Thedigitsarestoredinreverseorder,andeachoftheirnodescontainsasin......
  • POJ 2247 Humble Numbers(搜索,生成子集)
    HumbleNumbers(搜索,生成子集)题目:​ 给出多次询问,问第k个丑数是多少(最多询问到k=5842)。​ 丑数:分解质因数后,质因子只包含2,3,5,7的数字。思路:​ 通过预处理得到,584......
  • 算法判断矩形和圆形相交 OBB & Circle
        转自:https://www.zhihu.com/question/24251545......
  • R语言:对同时包含字母和数字的列进行排序(order columns containing numbers and letter
    原始数据如下所示:现在想对第一列和第二列进行排序,得到如下结果:则可以使用代码:sort=ori[order(as.numeric(sub("\\chr+","",ori$V1)),ori$V2),]......
  • 3.14 circle
    ★实验任务最近silchen又发现了一个关于圆的有趣的问题:在圆上有2n个不同的点,按顺序排列,n=2的时候如图:silchen用m条线段把这些点连接了起来(每个点保证只连一条线段),现......
  • Fair Numbers CodeForces - 1465B
    FairNumbersCodeForces-1465B我们定义一个好数规则如下:它能够整除自己的每一个非零位。例如说,102是一个好数,因为它能整除1和2。282则不是,因为它不能整除8。......
  • [P3445] [POI2006] TAN - Dancing in Circles
    神仙题目!!!感谢程老师完成了几乎所有的证明过程。首先注意到模数是\(2005\),去掉模数似乎很不可做,所以大胆猜测正解依赖模数。不难发现,把\(n\)个人分成\(k_1\)个大小为......
  • LeetCode448. Find All Numbers Disappeared in an Array
    题意n个数,统计1-n中未出现的数方法遍历和标记代码classSolution{public:vector<int>findDisappearedNumbers(vector<int>&nums){sort(nums.beg......