C. Sequence Transformation
Posted mch5201314
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C. Sequence Transformation相关的知识,希望对你有一定的参考价值。
链接
[http://codeforces.com/contest/1059/problem/C]
题意
给你一个n,有个序列有n个元素分别时1 ~ n,每次去掉一个元素输出剩下元素的GCD,使得最后的排列字典序最大
分析
显然第一个是1,有一点就是相邻的奇偶数必互质gcd==1,所有第二部就是一个接一个地去掉所有的奇数,
后面就剩下12,22....x2<=n,同理相邻的偶数gcd必是2,相差4的偶数gcd必是4,以此类推
但有个情况就是剩下3个数的时候,比如x,2x,3x,怎么删除某个数都不能使gcd为2x,这时最大的字典序只能是x,x,3*x;
看代码就知道了
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,base,i;
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
base=1;
while(n){
if(n==3)
{
cout<<base<<‘ ‘<<base<<‘ ‘<<3*base<<endl;
break;
}
for(i=1;i<=n/2+n%2;i++) cout<<base<<‘ ‘;
n/=2;
base*=2;
}
return 0;
}
以上是关于C. Sequence Transformation的主要内容,如果未能解决你的问题,请参考以下文章
C. Sequence Pair Weight——Codeforces Round #721 (Div. 2)
Codeforces Round #721 (Div. 2) C. Sequence Pair Weight(计算贡献/STL)