zoukankan      html  css  js  c++  java
  • ACM继续XXX定律

    题目描述:
        当n为3时,我们在验证xxx定律的过程中会得到一个序列,3,5,8,4,2,1,将3称为关键数,5,8,4,2称为覆盖数。现在输入n个数字a[i],根据关键数与覆盖数的理论,我们只需要验证其中部分数就可以确定所有数满足xxx定律,输出输入的n个数中的关键数。如果其中有多个关键数的话按照其输入顺序的逆序输出。
    输入:
        输入数据包含多个用例,每个用例首先包含一个整数n,然后接下来一行有n个整数a[i],其中: 1<=n<=500, 1<a[i]<=1000
    输出:
        请计算并输出数组a中包含的关键数,并按照其输入顺序的逆序输出,每个用例输出占一行。
    样例输入:
    3
    3 8 4
    5
    3 8 4 7 15
    5
    3 8 4 15 7
    0
    样例输出:
    3
    15 7 3
    7 15 3
    main.cpp
     1 #include <iostream>
     2 #include <cstring>
     3 using namespace std;
     4 
     5 void get_xxx(int x, int xxx[]);
     6 
     7 int main()
     8 {
     9     int xxx[400005], a[505];
    10     int n,i,check;
    11     while(cin>>n && n>0) {
    12         for(i=0; i<n; i++) cin>>a[i];
    13         memset(xxx, 0, sizeof(xxx));
    14         for(i=0; i<n; i++)
    15             get_xxx(a[i],xxx);
    16         check=1;
    17         for(i=n-1; i>=0; i--)
    18             if(xxx[a[i]] == 0) {
    19                 if(check==1) cout<<a[i];
    20                 else cout<<" "<<a[i];
    21                 check=0;
    22             }
    23         cout<<endl;
    24     }
    25     return 0;
    26 }
    27 
    28 void get_xxx(int x, int xxx[]) {
    29     if(x==1) return ;
    30     if(x%2==1) 
    31         x = (3*x+1)/2 ;
    32     else 
    33         x/=2;
    34     xxx[x]=1;
    35     get_xxx(x, xxx);    
    36 }
  • 相关阅读:
    单个 js 文件禁用 ESLint 语法校验
    meta标签整合
    安装es6编译babel
    JSON.parse()和JSON.stringify()的区别
    preventDefault()、stopPropagation()、return false 的区别
    excel 表格内容读取
    redis 小例
    多文件打包下载
    随笔
    js数组删除元素
  • 原文地址:https://www.cnblogs.com/wizzhangquan/p/2954545.html
Copyright © 2011-2022 走看看