题解 | #继续xxx定律#

继续xxx定律

https://www.nowcoder.com/practice/9cc1055241c547269f58fa8b009e335d

遍历数组每个数的xxx定律,若数组中存在覆盖数,则将其置0,遍历完成数组后,数组中的非0数即为关键数,逆向输出即可。

#include <iostream>
using namespace std;

void key(int *a, int n){
    for (int i = 0; i < n; i++){
        int temp = a[i];
        while (temp > 1){
            if (temp % 2 == 0){
                temp = temp / 2;
                for (int j = 0; j < n; j++){
                    if(a[j] == temp) a[j] =0;	//将覆盖数置0,非0即为关键数
                }
            }
            else{
                temp = (3 * temp + 1) / 2;
                for (int j = 0; j < n; j++){
                    if(a[j] == temp) a[j] =0;	//将覆盖数置0,非0即为关键数
                }
            }
            
        }
    }
     for (int i = n-1; i >= 0; i--){//输入顺序的逆序输出
            if (a[i] != 0)
                cout<<a[i]<<" ";
}
}
int main() {
    int n;
    
    while (cin >> n && n != 0) { // 注意 while 处理多个 case
        int a[n];

        for (int i = 0; i < n; i++){	//输入序列
            cin >> a[i];
        }
        
        key(a,n);
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

06-27 18:53
门头沟学院 Java
这样才知道自己不适合搞代码,考公去咯
只爱喝白开水:我也发现不适合搞代码,打算转非技术方向了
点赞 评论 收藏
分享
迟缓的斜杠青年巴比Q...:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务