首页 > 其他分享 >CF895C Square Subsets

CF895C Square Subsets

时间:2022-10-06 15:22:47浏览次数:53  
标签:... ch Subsets int void args CF895C Square put

CF895C Square Subsets

注意到平方数要求每个质因数的幂次均为偶数。

由于 \(70\) 以内仅有 \(19\) 个质因数,考虑将每个 \(a_i\) 按照每个质因数的奇偶性分解为 \(01\) 串。具体的,若 \(p^{2k+1}|a_i(k \in N)\),则 \(a_i\) 对应的 \(01\) 串中该位表示为 \(1\),否则表示为 \(0\)。

将每个 \(a_i\) 对应的 \(01\) 串插入线性基,则线性基可求出最小线性无关组,记其大小为 \(s\)。

则最终的答案为 \(2^{n-s}-1\)。

#include<bits/stdc++.h>
using namespace std;
namespace IO{
	template<typename T>inline bool read(T &x){
		x=0;
		char ch=getchar();
		bool flag=0,ret=0;
		while(ch<'0'||ch>'9') flag=flag||(ch=='-'),ch=getchar();
		while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(),ret=1;
		x=flag?-x:x;
        return ret;
	}
	template<typename T,typename ...Args>inline bool read(T& a,Args& ...args){
	    return read(a)&&read(args...);
	}
	template<typename T>void prt(T x){
		if(x>9) prt(x/10);
		putchar(x%10+'0');
	}
	template<typename T>inline void put(T x){
		if(x<0) putchar('-'),x=-x;
		prt(x);
	}
	template<typename T>inline void put(char ch,T x){
		if(x<0) putchar('-'),x=-x;
		prt(x);
		putchar(ch);
	}
	template<typename T,typename ...Args>inline void put(T a,Args ...args){
	    put(a);
		put(args...);
	}
	template<typename T,typename ...Args>inline void put(const char ch,T a,Args ...args){
	    put(ch,a);
		put(ch,args...);
	}
	inline void put(string s){
		for(int i=0,sz=s.length();i<sz;i++) putchar(s[i]);
	}
	inline void put(const char* s){
		for(int i=0,sz=strlen(s);i<sz;i++) putchar(s[i]);
	}
}
using namespace IO;
#define N 100005
#define mod 1000000007
inline int power(int x,int y,int p){
	int res=1;
	while(y){
		if(y&1) res=(long long)res*x%p;
		x=(long long)x*x%p;
		y>>=1;
	}
	return res;
}
int n,maxn=19,vis[25];
inline void insert(int x){
	for(int i=maxn;~i;i--){
		if(x>>i&1){
			if(vis[i]) x^=vis[i];
			else return vis[i]=x,void();
		}
	}
}
int pri[20]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67};
int main(){
	read(n);
	for(int i=1,x;i<=n;i++){
		read(x);
		int k=0;
		for(int j=0;j<19;j++)
			if(x%pri[j]==0){
				int num=0;
				while(x%pri[j]==0) num^=1,x/=pri[j]; 
				k^=num<<j;
			}
		insert(k);
	}
	for(int i=19;~i;i--) 
		if(vis[i]) n--;
	put('\n',(power(2,n,mod)+mod-1)%mod);
	return 0;
}


标签:...,ch,Subsets,int,void,args,CF895C,Square,put
From: https://www.cnblogs.com/fzj2007/p/16757685.html

相关文章

  • AT2371 [AGC013E] Placing Squares
    AT2371[AGC013E]PlacingSquares设\(f_i\)表示考虑到第\(i\)个点的贡献之和且不考虑坏点。不难发现转移方程为\(f_n=\sum_{i=0}^nf_i\times(n-i)^2\)则当第\(n......
  • Subsets of Array
    寻找一组数组中不重复元素的子集packagecom.example.mathematicaldemo.demo;importlombok.extern.slf4j.Slf4j;/***资料:*https://easylearn.baidu.com/edu-......
  • [USACO3.2]魔板 Magic Squares
    一道简单的bfs题目,关键是怎么表示状态。康托展开适用于全排列,比如一个排列1324,我们要求出它是排第几地排列第一位:第一位比1小的排列都比这个排列小,但是没有ans+=03!......
  • Smallest Subsets
    传送门题意:\(n\le1e5\)个整数,范围\(-1e9\lea\le1e9\),求第\(k\)小的子集和思路先考虑只有正数怎么做这就是经典的类最短路:先将序列排序,然后从最小的子集和\({......
  • Root mean square(RMS)均方根在电学上的应用
    前言Rootmeansquare(RMS)中文名也叫均方根。在物理上经常用某一个数学公式来带入实际物理意义,我们来分析下RMS有什么物理应用在里面。正文数学定义均方根常见的定义一......
  • 「AGC036F」Square Constraints 题解
    「AGC036F」SquareConstraints题解题目大意给定一个整数$n$,求有多少种$0\-\2n!-!1$的排列$P$,使得对于每个$i$,都有$n^2\lei^2+P_i^2\le4n^2$。......
  • CF1715F Crop Squares 题解
    CF1715FCropSquaressolution有一个\(n\timesm\)的长方形,四个角的坐标分别为$(0,0)$,$(0,m)$,$(n,0)$,$(n,m)$。在长方形里面有一个\(1\time......
  • [Google] LeetCode 2013 Detect Squares
    YouaregivenastreamofpointsontheX-Yplane.Designanalgorithmthat:Addsnewpointsfromthestreamintoadatastructure.Duplicatepointsareallow......
  • MathProblem 29 Four dogs and a square problem
    Fourdogsoccupythefourcornersofasquarewithsideoflengtha.Atthesametimeeachdogstartswalkingatthesamespeeddirectlytowardthedogonhis......