九度OJ 1033:继续xxx定律 (基础题)
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:4987
解决:1201
- 题目描述:
-
当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
- 样例输出:
-
- 3
- 15 7 3
- 7 15 3
- 3
思路:
主要思路是用一个数组保存已经验证过的覆盖数。
尽管这个题不难,但容易出错的地方不少。
最需要注意的是验证过程中的覆盖数并不包括关键数。我因为这个WA了好多次。
代码:
- #include <stdio.h>
- #include <stdlib.h>
- #define N 500
- #define M 1000000
- int change(int x)
- {
- if (x%2 == 0)
- x /= 2;
- else
- x = (3*x+1)/2;
- return x;
- }
- int main(void)
- {
- int n, i;
- int a[N], tmp[M];
- while (scanf("%d", &n) != EOF && n)
- {
- for (i=0; i<M; i++)
- tmp[i] = 0;
- tmp[1] = 1;
- for (i=0; i<n; i++)
- {
- scanf("%d", &a[i]);
- if (tmp[a[i]] == 1)
- continue;
- int m = a[i];
- while (m != 1)
- {
- if (tmp[m] == 1)
- break;
- if (m != a[i])
- tmp[m] = 1;
- m = change(m);
- }
- }
- int check=1;
- for(i=n-1;i>=0;i--)
- {
- if((tmp[a[i]]!=1))//是否为关键数
- {
- if(check)
- {
- printf("%d", a[i]);
- check=0;
- }
- else
- printf(" %d", a[i]);
- }
- }
- printf("\n");
- }
- return 0;
- }
- /**************************************************************
- Problem: 1033
- User: liangrx06
- Language: C
- Result: Accepted
- Time:20 ms
- Memory:4744 kb
- ****************************************************************/
九度OJ 1033:继续xxx定律 (基础题)的更多相关文章
- 九度OJ 1031:xxx定律 (基础题)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6058 解决:3816 题目描述: 对于一个数n,如果是偶数,就把n砍掉一半:如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数 ...
- 九度OJ 1345:XXX定律之画X (递归)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:361 解决:157 题目描述: 给你一个n,然后让你输出F(n) 规则是这样的,F(n)的输出结果是: F(n-1) F(n-1) ...
- 九度OJ 1197:奇偶校验 (基础题)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3590 解决:1511 题目描述: 输入一个字符串,然后对每个字符进行奇校验,最后输出校验后的二进制数(如'3',输出:10110011). ...
- 九度OJ 1059:abc (基础题)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3642 解决:2869 题目描述: 设a.b.c均是0到9之间的数字,abc.bcc是两个三位数,且有:abc+bcc=532.求满足条件的 ...
- 九度OJ 1057:众数 (基础题)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:8431 解决:2819 题目描述: 输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的 ...
- 九度OJ 1032:ZOJ (基础题)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4569 解决:2561 题目描述: 读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的 ...
- 九度OJ 1116:加减乘除 (基础题)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1466 解决:902 题目描述: 根据输入的运算符对输入的整数进行简单的整数运算. 运算符只会是加+.减-.乘*.除/.求余%.阶乘!六个运 ...
- 九度OJ 1006 ZOJ问题 (这题測试数据有问题)
题目1006:ZOJ问题 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:15725 解决:2647 题目描写叙述: 对给定的字符串(仅仅包括'z','o','j'三种字符),推断他能否AC ...
- 九度oj 1003
前几天开刷九度oj,准备把做的题都放上,先放1003 题目1003:A+B 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:16923 解决:7029 题目描述: 给 ...
随机推荐
- 洛谷——1508 Likecloud-吃、吃、吃
题目背景 问世间,青春期为何物? 答曰:“甲亢,甲亢,再甲亢:挨饿,挨饿,再挨饿!” 题目描述 正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一直处在饥饿的状态中.某日上课,正当他饿得头昏 ...
- java.lang.StackOverflowError at org.eclipse.jetty.util.resource.Resource.<init>(Resource.java:40)
今天做项目的时候,不知道哪根筋搭错了,多写了一句话,导致我忙活了一下午,各种百度,最后在朋友的帮助下,给了我思路,完美解决,不多说,上图. 我的登录页面引入了bootstrap.jsp的东西 解决问题 ...
- SQLite中特殊的INSERT语句
SQLite中特殊的INSERT语句 在SQLite中,INSERT是基本语句,用来向表中插入数据.但是当表中存在字段存在唯一.非空.检查.主键等约束时,插入的数据很容易和约束冲突,造成插入操作失 ...
- JAVA基础之集合、Iterator迭代器、泛型及增强for循环
个人理解: 对于集合,首先要明确的是最顶层的接口是Collection接口类,其包含一些基本的方法以便子类调用,不过在定义的时候最好定义好数据类型,以免遍历时还得必须进行向上转型:特别注意的是其没有关 ...
- new子类会先运行父类的构造函数
发现子类构造函数运行时,先运行了父类的构造函数.为什么呢? 原因:子类的所有构造函数中的第一行,其实都有一条隐身的语句super(); super(): 表示父类的构造函数,并会调用于参数相对应的父类 ...
- Android Spinner In Toolbar
As the title of the post suggest in this tutorial we will see how to have spinner widget inside the ...
- {dede:sql}标签的用法
sql标签可以称得上是个万能标签了,查询数据库将其输出,这里介绍一些关于这个标签的用法: 1.用来输出统计内容,这个是不错的,举个例子,我们来统计下总共发了多少的文章,思路就是输出dede_addon ...
- winsock 收发广播包 【转】
winsock 收发广播包 ☛广播包的概念 广播包通常为了如下两个原因使用:1 一个应用程序希望在本地网络中找到一个资源,而应用程序对于该资源的地址又没有任何先验的知识. 2 一些重要的功能,例如路由 ...
- NormalMap 贴图 [转]
转载: http://www.zwqxin.com/archives/shaderglsl/review-normal-map-bump-map.html 说起Normal Map(法线贴图),就 ...
- 由内省引出JavaBean的应用
IntroSpector-->javaBean-->特殊的java类 get和set方法 ReflectPoint pt1 = new ReflectPoint(3,5); String ...