丢失的数字。。。。怎么老是Time Limit Exceeded。。望解

明日菜心 2012-07-13 10:32:27
Total Submission: 825 Submission Accepted: 114



Description

有N个数字是来自一个长度为N+1的连续整数序列,但是给你的并不是有序的,请你帮忙找出来是缺失的那个数字是在序列的两边还是中间

Input

有多组测试数据,每组测试数据包括2行,第一行包括一个整数N(0<N<10000),第二行包括N个整数
以N为0结束
Output

每组测试数据输出结果:
中间缺失输出M,两边缺失输出S

#include<iostream>
using namespace std;
int a[10000];
int main()
{int n,max,min,j=1;
while(cin>>n&&n!=0)
{max=-234567890;
min=234567890;
for(int i=1;i<=n;i++)
{cin>>a[i];
if(a[i]>max)max=a[i];
if(a[i]<min)min=a[i];}
if((max-min)==n-1){cout<<"Case "<<j<<":"<<endl;
cout<<"S"<<endl;}
else {cout<<"Case "<<j<<":"<<endl;
cout<<"M"<<endl;}
j++;
}
return 0;
}
...全文
124 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
明日菜心 2012-07-15
  • 打赏
  • 举报
回复
http://icpc.ahu.edu.cn/OJ/ContestProblem.aspx?cid=54&id=559
明日菜心 2012-07-14
  • 打赏
  • 举报
回复
关键只知道n个数字。。不是知道n+1个数字哎。。。还有n+1个数字并不是只能从1开始。。。只要是连续的n+1个数字都可以。。
hen_hao_ji 2012-07-14
  • 打赏
  • 举报
回复
http://tieba.baidu.com/p/1589114689
楼主发下链接,我交下试试
pathuang68 2012-07-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

关键只知道n个数字。。不是知道n+1个数字哎。。。还有n+1个数字并不是只能从1开始。。。只要是连续的n+1个数字都可以。。
[/Quote]

那楼主所给出的信息应该不全了。
“有N个数字是来自一个长度为N+1的连续整数序列,但是给你的并不是有序的,请你帮忙找出来是缺失的那个数字是在序列的两边还是中间”

现在假定N = 5,N个数字是 : 6 5 9 8 7,请问第N+1个数字是什么,在序列的左边、右边还是中间?
pathuang68 2012-07-13
  • 打赏
  • 举报
回复
N+1个数字的和 Sn+1 = 1 + 2 + ... + N + (N + 1) = (N + 1) * (N + 2) / 2,时间复杂度O(1)
假定N个数字的和未Sn,时间复杂O(N)

Sn+1 - Sn就是丢失的数字,剩下的不用说了吧:)

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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