codeforces_C. Sequence Transformation
http://codeforces.com/contest/1059/problem/C
题意:
最初给一个1、2、3、……、n的序列,每次操作先将所有元素的最大公约数加入答案序列,然后在序列中任意删除一个数,一直重复至序列为空,求字典序最大的答案序列。
思路:
1、当n<4时,结果特判。当n>=4时,要使结果序列的字典序最大,那么必须尽快得到大于1的最大公约数,容易想到,2这个最大公约数是最快可以得到的,因为所有偶数都有2这个约数,先删除所有奇数,所得到的所有结果元素为1,这时候原序列所有元素的最大公约数为2。
2、接着,因为总是想让字典序最大,那么就要尽快得到大于2的最大公约数,此时含公约数4的元素占序列中元素数量的一半。(2,4,6,8,10,12,14,16……),将公约数2提出,序列再次变为(1,2,3,4,5,6,7,8……),此时在偶数位上的元素都是含公约数4的元素,删除奇数位上的元素,结果序列加入结果元素2,删除完后,序列中所有元素均含后公约数4。依次类推,直至原序列元素个数<4。
#include<iostream>
#include<cstdio>
using namespace std; int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int all=n,tmp=;
while(all>)
{
for(int i=; i<all-all/; i++)
printf("%d ",tmp);
tmp*=;
all/=;
}
if(all==)
printf("%d\n",tmp);
else if(all==)
printf("%d %d\n",tmp,tmp*);
else
printf("%d %d %d\n",tmp,tmp,tmp*);
}
return ;
}
codeforces_C. Sequence Transformation的更多相关文章
- CF1059C Sequence Transformation 题解
这几天不知道写点什么,状态也不太好,搬个题上来吧 题意:给定一个数n,设一个从1到n的序列,每次删掉一个序列中的数,求按字典序最大化的GCD序列 做法:按2的倍数找,但是如果除2能得到3的这种情况要特 ...
- Codeforces Round #514 (Div. 2) C. Sequence Transformation(递归)
C. Sequence Transformation 题目链接:https://codeforces.com/contest/1059/problem/C 题意: 现在有1~n共n个数,然后执行下面操 ...
- [CodeForces]1059C Sequence Transformation
构造题. 我递归构造的,发现如果N>3的话就优先删奇数,然后就把删完的提取一个公约数2,再重复操作即可. 具体原因我觉得是因为对于一个长度大于3的序列,2的倍数总是最多,要令字典序最大,所以就把 ...
- 【CF 1059C】 Sequence Transformation 数学
C. Sequence Transformation:http://codeforces.com/contest/1059/problem/C 题意 给你一个n,第一次输出1-n个数的gcd,然后你可 ...
- CodeForces - 1059C Sequence Transformation (GCD相关)
Let's call the following process a transformation of a sequence of length nn. If the sequence is emp ...
- CF1059C Sequence Transformation
原题链接 题目大意 读入一个正整数\(n\).你有一个长度为\(n\)的排列.对于一次操作,我们需要做一下几步: 1.将目前序列内所有数的\(gcd\)加入答案中 2.将序列内随意删除一个数 3.如果 ...
- Codeforces Round #514 (Div. 2) C. Sequence Transformation 思维构造
题意 给出一个1-n的集合 gcd 集合里面的所有数 得到的 一个 数 然后自己选择删去一个数 要使得到的数 构成的数列 的字典序最大 思路: gcd所有数 那gcd得到的数肯定要小于数 ...
- Codeforces Round #514 (Div. 2) C. Sequence Transformation
题目大意:给你一个n 从1,2,3......n这个序列中 依次进行以下操作:1 .求所有数的最大公因数,放入a序列里面 2 .任意删去一个元素 一直到序列为空 根据删除元素的不同,导致序列a的字典序 ...
- C. Sequence Transformation
链接 [http://codeforces.com/contest/1059/problem/C] 题意 给你一个n,有个序列有n个元素分别时1 ~ n,每次去掉一个元素输出剩下元素的GCD,使得最后 ...
随机推荐
- Revit插件开发HelloWorld
1. 使用 VS2012 先建立一个项目. 2. 在这里我们选择建立C# 类库项目, 改动项目名称为HelloWorld. 能够自己定义改动项目存放路径. 3. 加入 Revit 插件 API 的引用 ...
- mysql 查看编码方式
一. 查看数据库的字符集 show variables like 'character\_set\_%'; 输出: +--------------------------+--------+ | Va ...
- springmvc处理ajax跨域
解决跨域问题:在web.xml中配置corsFilter mvc.xml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <!- ...
- “Live Desktop” privacy statement
“Live Desktop” pays attention to your privacy protection. Sometimes we need some information to prov ...
- Centos6可以ping通但浏览器不能上网(解决)
遇到这种情况,只需要修改一下DNS Server即可,如下图. 这样再试试,应该可以了吧-
- sql sever使用sql语句查询数据, 分割某字段改为多行,其它字段保持不变
如表中有A.B.C三个字段,数据如下: A B C 1,2 3 4 要求查询结果: A B C 1 3 ...
- Python数据存储 — MySQL数据库操作
本地安装MySQL 调试环境python3.6,调试python操作mysql数据库,首先要在本地或服务器安装mysql数据库. 安装参考:https://mp.csdn.net/postedit/8 ...
- 第二篇(那些JAVA程序BUG中的常见单词)
Cannot instantiate the type xxx 无法实例化类型xxx instantiate 实例化
- ROS学习笔记八:基于Qt搭建ROS开发环境
1 前言 本文介绍一种Qt下进行ROS开发的完美方案,使用的是ros-industrial的Levi-Armstrong在2015年12月开发的一个Qt插件ros_qtc_plugin,这个插件使得Q ...
- 字符串处理 Codeforces Round #285 (Div. 2) B. Misha and Changing Handles
题目传送门 /* 题意:给出一系列名字变化,问最后初始的名字变成了什么 字符串处理:每一次输入到之前的找相印的名字,若没有,则是初始的,pos[m] 数组记录初始位置 在每一次更新时都把初始pos加上 ...