2017今日头条实习测试

33 篇文章 0 订阅


题目一、

两数组找相同的元素-array
时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
给两个整数(int)数组,输出相同的元素。
输入
给定两个整型数组[a1, a2, ...., am],[b1, b2, ..., bn]
输入格式如下,第一行给定第一个数组的大小m,接下来的m行为其数组元素a1 -- am,每行一个元素;
第m+1行为第二个数组的大小n,接下来的n行为其数组元素b1 -- bn,也是每行一个元素。示例如下:
m
a1
a2

am
n
b1
b2

bn
?
输出
两个数组中相同的元素,以空格分隔在一行中显示,显示顺序为其在第二个数组中出现的顺序。

样例输入
5
11
15
9
12
3
4
11
3
9
7

样例输出
11 3 9

#include <iostream> 
#include <algorithm> 
#include <vector>
int main()
{
	int m, n;
	int i, j;
	cin >> m;
	//int *a = new int[m];
	vector<int> a;
	int temp;
	for(i=0; i<m; ++i)
	{
		//cin >> a[i];
		cin >> temp;
		a.push_back(temp);
	}
	cin >> n;
	//int *b = new int[n];
	vector<int> b;
	for(i=0; i<n; ++i)
	{
		//cin >> b[i];
		cin >> temp;
		b.push_back(temp);
	}
	
	for(j=0; j<n; ++j)
	{
		for(i=0; i<m; ++i)
		{
			if(b[j]==a[i])
			{
				cout<<b[j]<<' ';
				break;
			}
		}
	}
	cout << endl;

	/*
	for(i=0; i<m; ++i)
		cout << a[i];
	cout << endl;
	for(i=0; i<n; ++i)
		cout << b[i];
	cout << endl;
	*/
	return 0;
}

通过率90%,有时间再调调。。。

-----------------------------------------------------------------------------------

题目二、

DAU 统计
时间限制:C/C++语言 2000MS;其他语言 4000MS
内存限制:C/C++语言 32768KB;其他语言 557056KB
题目描述:
日活跃用户数 (DAU) 是衡量一个产品表现的重要指标。
需要编写程序,根据给定的某一天的 N 条访问记录,对当天的用户总数 M 进行统计。
每个用户可能访问多次。
为了方便,我们用数字 (uid) 唯一标识每个用户。
输入
每一行包含一个 uid,遇到 0 时认为输入结束。
输入共包含 N+1 行,可认为是无序的。
输出
一个数字:去重后 uid 的数量 M。

样例输入
12933
111111
59220
69433
59220
111111
0
样例输出
4

Hint
数据范围
0 < uid < 2^63
对于 30% 的数据,0 < N < 100,000, 0 < M < 100,000
对于 100% 的数据,0 < N < 1,000,000, 0 < M < 800,000

#include <iostream> 
#include <algorithm> 
#include <vector>

using namespace std;

int main()
{
	vector<long> a;
	long temp;
	while(1)
	{
		cin >> temp;
		if(temp == 0)
			break;
		a.push_back(temp);
	}
	sort(a.begin(),a.end());
	a.erase(unique(a.begin(), a.end()), a.end());
	cout << a.size() << endl;
	return 0;
}

通过率100%,不过用set更简单,待测。。。

------------------------------------------------------------------------------------

题目三、(麻烦 的一道题)

#include <iostream> 
#include <algorithm> 
#include <vector>

using namespace std;

int main()
{
	char Num[10][5][3]={{{'*','*','*'},{'*',' ','*'},{'*',' ','*'},{'*',' ','*'},{'*','*','*'}},
						{{' ','*',' '},{' ','*',' '},{' ','*',' '},{' ','*',' '},{' ','*',' '}},
						{{'*','*','*'},{' ',' ','*'},{'*','*','*'},{'*',' ',' '},{'*','*','*'}},
						{{'*','*','*'},{' ',' ','*'},{'*','*','*'},{' ',' ','*'},{'*','*','*'}},
						{{'*',' ','*'},{'*',' ','*'},{'*','*','*'},{' ',' ','*'},{' ',' ','*'}},
						{{'*','*','*'},{'*',' ',' '},{'*','*','*'},{' ',' ','*'},{'*','*','*'}},
						{{'*','*','*'},{'*',' ',' '},{'*','*','*'},{'*',' ','*'},{'*','*','*'}},
						{{'*','*','*'},{' ',' ','*'},{' ',' ','*'},{' ',' ','*'},{' ',' ','*'}},
						{{'*','*','*'},{'*',' ','*'},{'*','*','*'},{'*',' ','*'},{'*','*','*'}},
						{{'*','*','*'},{'*',' ','*'},{'*','*','*'},{' ',' ','*'},{'*','*','*'}}};

	char Fh[6][5][3]=	{{{' ',' ',' '},{' ','*',' '},{'*','*','*'},{' ','*',' '},{' ',' ',' '}},
						{{' ',' ',' '},{' ',' ',' '},{'*','*','*'},{' ',' ',' '},{' ',' ',' '}},
						{{' ',' ',' '},{'*',' ','*'},{' ','*',' '},{'*',' ','*'},{' ',' ',' '}},
						{{' ',' ',' '},{' ',' ','*'},{' ','*',' '},{'*',' ',' '},{' ',' ',' '}},
						{{' ',' ',' '},{'*','*','*'},{' ',' ',' '},{'*','*','*'},{' ',' ',' '}},
						{{' ',' ',' '},{' ',' ',' '},{' ',' ',' '},{' ','*','*'},{' ','*','*'}}};
	
	char result[5][70];
	int i, j, k;
	int a, b, c;
	char d, e;
	int fh;
	cin >> a >> d >> b ;
	//cout << a << d << b <<endl;

	switch(d){
	case '+':
		{
			fh = 0; 
			c = a + b;
			break;
		}
	case '-': 
		{
			fh = 1; 
			c = a - b;
			break;
		}
	case '*': 
		{
			fh = 2; 
			c = a * b;
			break;
		}
	case '/': 
			{
			fh = 3; 
			c = float(a / b);
			break;
		}
	}
	//cout << c << endl;
	//cout << fh << endl;


	for(i=0; i<5; ++i)
	{
		j=0;
		int num;
		for(num=0; num<3; ++num)//a
		{
			result[i][j]=Num[a][i][num];
			j++;
		}
		result[i][j++]=' ';
		result[i][j++]=' ';
		for(num=0; num<3; ++num)//+
		{
			result[i][j]=Fh[fh][i][num];
			j++;
		}
		result[i][j++]=' ';
		result[i][j++]=' ';
		for(num=0; num<3; ++num)//b
		{
			result[i][j]=Num[b][i][num];
			j++;
		}
		result[i][j++]=' ';
		result[i][j++]=' ';
		for(num=0; num<3; ++num)//=
		{
			result[i][j]=Fh[4][i][num];
			j++;
		}
		result[i][j++]=' ';
		result[i][j++]=' ';
		for(num=0; num<3; ++num)//c
		{
			result[i][j]=Num[c][i][num];
			j++;
		}
		result[i][j]='\0';
	}

	for(i=0; i<5;++i)
	{
		printf("%s\n", result[i]);
	}

/*
	for(i=0; i<=9; ++i)
	{
		for(j=0; j<5; ++j)
		{
			for(k=0; k<3; ++k)
			{
				cout << Num[i][j][k] ;
			}
			cout << endl;
		}
	}
	for(i=0; i<6; ++i)
	{
		for(j=0; j<5; ++j)
		{
			for(k=0; k<3; ++k)
			{
				//cout << *(*(*(p+i)+j)+k);
				cout << Fh[i][j][k] ;
			}
			cout << endl;
		}
	}

*/


	return 0;
}

只实现了 个位 与 个位的运算,待完善,最近实验室比较忙,没空刷题。。。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值