有没有更好的算法实现这个程序?

707wk 2014-12-24 06:56:00
Missing Numbers
Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:1536KB
Total submit users: 36, Accepted users: 19
Problem 10050 : No special judgement
Problem description
Leo loves collecting numbers, he consumed half of his spare time and made a collection of all the numbers from 1 to n, one day, he decided to take out all the numbers he gathered and count them(a fantastic idea... -______-b). when the counting was finished, he found that there are only n - 2 numbers left, he can't memorize those numbers he already got, but still wonders which two numbers are missing.

Input
The input file consists of several test cases. Each case starts with a line containing one integer n, 2 < n <= 2000000, Then followed n - 2 lines, each line contains one exclusive integer k, 0 < k <= n. The last line of 0 indicates the end of input which should not be processed.

Output
For each test case, output a single line contains the two missing numbers in ascending order.

Sample Input

3
2
5
1
5
3
0

Sample Output

1 3
2 4

Judge Tips
Huge input file, 'scanf'&'printf' recommended to avoid TLE.
MLE expected...

Problem Source
HNU Contest

输入n,然后输入n-2个数,找出没有输入的那两个数。
我用的方法是一个位记录一个数字,内存占用大概需要238KB,需要两次历遍数组,一次处理,一次输出。代码写的有点问题,输出结果和预期不一样。
各位有没有更好的算法实现这个程序?
...全文
206 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly_dragon_fly 2014-12-26
  • 打赏
  • 举报
回复
引用 2 楼 fly_dragon_fly 的回复:
我有个想法,不过没有验证是否满足时间限制, 就扫描一遍就可以了。需要64位的int(用于存放平方和) 1) 每得到一个数字,分别加上和以及平方和 2) 扫描之后通过公式得到 缺少2个数字的 和 , 平方和 3) 解方程就可以得到缺少的2个数字。
64位,也就是2个int了,你的int不会是16位的吧
fly_dragon_fly 2014-12-25
  • 打赏
  • 举报
回复
我有个想法,不过没有验证是否满足时间限制, 就扫描一遍就可以了。需要64位的int(用于存放平方和) 1) 每得到一个数字,分别加上和以及平方和 2) 扫描之后通过公式得到 缺少2个数字的 和 , 平方和 3) 解方程就可以得到缺少的2个数字。
707wk 2014-12-25
  • 打赏
  • 举报
回复
引用 2 楼 fly_dragon_fly 的回复:
我有个想法,不过没有验证是否满足时间限制, 就扫描一遍就可以了。需要64位的int(用于存放平方和) 1) 每得到一个数字,分别加上和以及平方和 2) 扫描之后通过公式得到 缺少2个数字的 和 , 平方和 3) 解方程就可以得到缺少的2个数字。
数值有点大。。。
JiangWenjie2014 2014-12-24
  • 打赏
  • 举报
回复
就是这个思路没错了,仔细检查你的代码把
程序 = 数据结构 + 算法  程序是为了解决实际问题而存在的。然而为了解决问题,必定会使用到某些数据结构以及设计一个解决这种数据结构的算法。如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功。编程实战算法,不是念PPT,我们讲的就是实战与代码实现与企业应用。程序 = 数据结构 + 算法                ——图灵奖得主,计算机科学家N.Wirth(沃斯)作为程序员,我们做机器学习也好,做python开发也好,java开发也好。有一种对所有程序员无一例外的刚需 —— 算法与数据结构日常增删改查 + 粘贴复制 + 搜索引擎可以实现很多东西。同样,这样也是没有任何竞争力的。我们只可以粘贴复制相似度极高的功能,稍复杂的逻辑没有任何办法。语言有很多,开发框架更是日新月异3个月不学就落后我们可以学习很多语言,很多框架,但招聘不会考你用5种语言10种框架实现同一个功能。真正让程序员有区分度,企业招聘万年不变的重点 —— 算法与数据结构。算法代表程序员水平的珠穆朗玛。 本视频由微软全球最有价值专家尹成录制,拒绝念PPT,代码实战数据结构与算法导论。除了传统数据结构算法,加入高并发线程安全数据结构,分布式负载均衡算法,分布式哈希表,分布式排序等等现代算法。  算法,晦涩难懂,却又是IT领域受重视的素养之一。可以说,算法能力往往决定了一个程序员能够走多远。因此,BAT/FLAG等国内外各大名企非常喜欢在面试环节考核求职者的算法编程,这也成为了无数准程序员们过不去的一道“坎”。如何入门并成为一名出色的算法工程师?但无论半路出家还是科班出身,除学生时代搞算法竞赛的同学外真正用心学习过算法与数据结构太少太少。对于后期想要学习算法与数据结构却不得不面对以下问题:没有自己的知识框架,无法关联知识点,学习效率低有疑问而无人解答,有问题无法理解全靠猜测,一个问题卡好几天市面上资料题解质量参差不齐,正确性未可知Google算法-工程师尹成大哥学习算法

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧