codeforces 1059C. Sequence Transformation构造
Posted zmin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codeforces 1059C. Sequence Transformation构造相关的知识,希望对你有一定的参考价值。
题目:戳这里
题意:有1,2,3...n这n个数,求一次这些数的gcd,删去一个数,直到剩下一个数为止。输出这n个gcd的最大字典序。
解题思路:一开始的gcd肯定是1,要让字典序最大,我们可以想到下一个应该是2。这样就要把所有的奇数全给删去,这样就要考虑一个特殊情况,就是把所有奇数删去之后,刚好n==1的时候。因为n==1的话,gcd就是剩下的那个数本身了。因此要特判n==3的情况。其他的时候循环删除奇数的操作。(要不是b题看不懂题意,这次也不会那么惨T T
具体看代码。
1 #include <bits/stdc++.h> 2 typedef long long ll; 3 const int maxn = 1e6 + 10; 4 const int seed = 131; 5 const ll mod = 998244353; 6 const int inf = 0x3f3f3f3f; 7 using namespace std; 8 int main(){ 9 10 int n, cnt = 1; 11 scanf("%d", &n); 12 while(n) 13 { 14 if(n == 3) 15 { 16 printf("%d %d %d", cnt, cnt, cnt * 3); 17 return 0; 18 } 19 for(int i = 1; i <= n / 2 + n % 2; ++i) printf("%d ", cnt); 20 n /= 2; 21 cnt *= 2; 22 } 23 return 0; 24 }
以上是关于codeforces 1059C. Sequence Transformation构造的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces 1059E. Split the Tree
Codeforces-1059D:Nature Reserve问最大的圆包含全部点
Codeforces Round #514 (Div. 2) C. Sequence Transformation(递归)