链家2018春招C/C++开发实习生在线考试编程题

题目一

题解:该题目意思就是让你输入n组数据,然后求并集,利用STL容器set集合的特性:元素不重复存储,我们可以很轻易得出答案

 1 #include <iostream>
 2 #include <set>
 3 using namespace std;
 4 int function2()
 5 {
 6     set<int> a;
 7     int lines,row;
 8     int element;
 9     while(cin>>lines) //输入lines组数据
10     {
11         a.clear();//每次测试数据前都要将之前清空
12         for(int i=0;i<lines;i++)
13         {
14             cin>>row;  //输入每组数据的的个数
15             for(int j=0;j<row;j++)
16             {
17                 cin>>element;//具体的每个元素
18                 a.insert(element); //直接插入集合a中,会自动判断是否重复,如果重复,则不会插入,返回false
19             }
20         }
21         cout<<a.size()<<endl; //输出集合大小即可以
22     }
23     return 0;
24 }

题目二

题目解析:由三角形不难看出a+b>c,根据我们学习过的斐波那契数列1   2     3    5    8    13 。。。。。从下面这张照片我们可以了解一下斐波那契数列的特点,由此可以知道,从1到n,不在斐波那契数列上的应该是被拿掉的木棍数目

代码实现

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int result=0;//该值是输出结果值,初始化为0
 5     int N=0;
 6     int i,a,b;
 7     while(scanf("%d",&N)!=EOF)
 8     {
 9         for(i=4,a=2,b=3;i<=N;i++)
10         {
11             if(a+b>i)
12             {
13                 result++;
14             }
15             else 
16             {
17         a=b;
18         b=i;
19             }
20         }
21         printf("%d
",result);
22         result=0;
23 
24     }
25     return 0;
26 }

附链接 Java版本实现https://www.cnblogs.com/wupeixuan/p/8747665.html

原文地址:https://www.cnblogs.com/gaochaochao/p/8748715.html