您的位置:首页 > 其它

2017今日头条实习测试

2017-04-20 16:52 211 查看
题目一、

两数组找相同的元素-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
;
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;
}

只实现了 个位 与 个位的运算,待完善,最近实验室比较忙,没空刷题。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: