首页 > 其他分享 >#Div2.C Adding Powers[数学]

#Div2.C Adding Powers[数学]

时间:2023-02-08 15:14:33浏览次数:58  
标签:Adding cnt int up 数组 810 Powers Div2

Problem - C - Codeforces

能否对一个数组执行任意次操作,使得其变为目标数组。

对于第\(i\)次操作,我们可以放弃,或给数组中任意一个元素加上\(k^i\)。

\(n<=30,k<=100\),目标数组元素<=\(10^{16}\)

其实这个题很简单,但是看了很多人的代码都写的好长

这个题的意思说的很明白

我们知道 \(810\)= \(9^2+9^3\) , 可以知道

\(810\)\(\div\)\(9^2\)%\(9\)\(=1\)

\(810\)\(\div\)\(9^3\)%\(9\)\(=1\)

剩下的都同理

介于每个操作用一次,可以开一个map记录一下

如果有重复的就是不成立

那么就可以切掉了

key code

const int N=2e5+10;
int n,k;
int a[N];
void solve(){
	//try it again.
	cin>>n>>k;
	up(1,n)cin>>a[o];
	map<int,int>mp;
	up(1,n){
		int cnt=0;
		while(a[o]){
			cnt++;
			if(a[o]%k>1)NO
			if(a[o]%k==1)mp[cnt]++;
			a[o]/=k;
			if(mp[cnt]>1)NO
		}
	}
	YES
}

标签:Adding,cnt,int,up,数组,810,Powers,Div2
From: https://www.cnblogs.com/liangqianxing/p/17101810.html

相关文章