题目一、
两数组找相同的元素-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;
}
只实现了 个位 与 个位的运算,待完善,最近实验室比较忙,没空刷题。。。