[CodeForces]1059C Sequence Transformation

构造题。

我递归构造的,发现如果N>3的话就优先删奇数,然后就把删完的提取一个公约数2,再重复操作即可。

#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
int n;
void print(int sz,int tp) {
    if(sz==3) {printf("%d %d %d",tp,tp,tp*3);return;}
    if(sz==2) {printf("%d %d",tp,tp*2);return;}
    if(sz==1) {printf("%d",tp);return;}
    for(int i=1;i<=sz-(sz>>1);i++) printf("%d ",tp);
    print((sz>>1),tp<<1);      
    
}
int main() {
    scanf("%d",&n);
    print(n,1);
}                                            
Sequence Transformation

猜你喜欢

转载自www.cnblogs.com/sdfzhsz/p/9746558.html
今日推荐