zoukankan      html  css  js  c++  java
  • 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 }
    View Code
  • 相关阅读:
    对称加密和非对称加密
    SpringMVC 请求调用过程
    Swagger2常用注解和使用方法
    玩转汉诺塔
    java序列化
    判断当前时间是否在某时间段内
    docker限制容器日志大小
    MySQL数据库备份与恢复
    MySQL事物
    MySQL用户
  • 原文地址:https://www.cnblogs.com/zmin/p/9747160.html
Copyright © 2011-2022 走看看