牛客网三道编程题(六) 之华为机试在线训练(五)对随机数字去重、排序;取近似值

1、对随机数字去重、排序

      这道题我做的是对的。但是编译器显示有个结果输错了。我在VS2013下,把61个数据输送了一遍,显示的结果是正确的。我也就呵呵了。

牛客网三道编程题(六) 之华为机试在线训练(五)对随机数字去重、排序;取近似值_第1张图片

我的程序是这样的:

#include 
#include 
#include 
#include 

using namespace std;
 bool comp(const int &s1, const int &s2)  // 和sort()函数搭配使用
  {
	return s1 < s2;
  }
int main()
{
	int num_total,num;
	int a[1000] = {0};// 注意:此时的下标索引不再仅仅是0~9的数字了,而是一个数,可能很大
	cin >> num_total;
	vector veci;
	while (cin >> num)
	{
		a[num]++;
		if (a[num] == 1)
		{
			veci.push_back(num);
		}
	}
	sort(veci.begin(), veci.end(), comp);
	for (decltype(veci.size()) i = 0; i < veci.size(); i++)
	{
		cout << veci[i] << endl;
	}
	return 0;
}

显示的错误是这样的:

测试用例:
61
25
29
105
52
108
73
58
38
64
14
55
98
94
102
35
60
68
15
27
103
73
55
35
33
47
35
16
31
108
46
65
89
13
51
51
99
113
66
111
99
64
54
117
20
14
106
9
29
11
25
100
58
79
69
84
106
59
92
42
11
92

对应输出应该为:

9
11
13
14
15
16
20
25
27
29
31
33
35
38
42
46
47
51
52
54
55
58
59
60
64
65
66
68
69
73
79
84
89
92
94
98
99
100
102
103
105
106
108
111
113
117

你的输出为:

1

我在我的编译器上把 61 个数据输进去,显示的结果并不是1,而是正确结果。如下图所示:

输入的数字:

牛客网三道编程题(六) 之华为机试在线训练(五)对随机数字去重、排序;取近似值_第2张图片

牛客网三道编程题(六) 之华为机试在线训练(五)对随机数字去重、排序;取近似值_第3张图片


输出的结果:

牛客网三道编程题(六) 之华为机试在线训练(五)对随机数字去重、排序;取近似值_第4张图片

牛客网三道编程题(六) 之华为机试在线训练(五)对随机数字去重、排序;取近似值_第5张图片

2、取近似值

      这道题实在简单,本没有发布在博客上的必要,但既然是刷题,就发吧。

牛客网三道编程题(六) 之华为机试在线训练(五)对随机数字去重、排序;取近似值_第6张图片

程序如下:

#include
using namespace std;

int main()
{
	float n;
	cin >> n;
	if ((n - (int)n) >= 0.5)
	{
		cout << (int)n + 1;
	}
	else
	{
		cout << (int)n;
	}
	return 0;
}

还有一种更更简单的解法:

#include 
using namespace std;
int main()
{
float a;
cin>>a;
cout<



你可能感兴趣的:(华为机试108题)