生活随笔
收集整理的這篇文章主要介紹了
[网易]2018校园招聘编程题真题集合
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:?
小易準備去魔法王國采購魔法神器,購買魔法神器需要使用魔法幣,但是小易現在一枚魔法幣都沒有,但是小易有兩臺魔法機器可以通過投入x(x可以為0)個魔法幣產生更多的魔法幣。?
魔法機器1:如果投入x個魔法幣,魔法機器會將其變為2x+1個魔法幣?
魔法機器2:如果投入x個魔法幣,魔法機器會將其變為2x+2個魔法幣?
小易采購魔法神器總共需要n個魔法幣,所以小易只能通過兩臺魔法機器產生恰好n個魔法幣,小易需要你幫他設計一個投入方案使他最后恰好擁有n個魔法幣。?
參考答案:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
cin >> n;
int start =
0, end =
0;
while (end < n){start =
2 * start +
1;end =
2 * end +
2;}
while (
true){
int middle = (start + end) /
2;
if (n <= middle){
cout <<
'1';end = middle;}
else{
cout <<
'2';start = middle +
1;}
if (start == end)
break;}
cout << endl;
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
題目:?
為了得到一個數的”相反數”,我們將這個數的數字順序顛倒,然后再加上原先的數得到”相反數”。例如,為了得到1325的”相反數”,首先我們將該數的數字順序顛倒,我們得到5231,之后再加上原先的數,我們得到5231+1325=6556.如果顛倒之后的數字有前綴零,前綴零將會被忽略。例如n = 100, 顛倒之后是1.?
參考代碼:
#include <iostream>
using namespace std;
int func(
int n)
{
int temp = n;
int len =
0;
int pow =
1;
while (temp >
0){len++;
pow *=
10;temp /=
10;}temp = n;
for (
int i =
0; i < len; i++){
pow /=
10;n += (temp %
10)*
pow;temp /=
10;}
return n;
}
int main()
{
int n;
cin >> n;
cout << func(n) << endl;
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
題目:?
一個由小寫字母組成的字符串可以看成一些同一字母的最大碎片組成的。例如,”aaabbaaac”是由下面碎片組成的:’aaa’,’bb’,’c’。牛?,F在給定一個字符串,請你幫助計算這個字符串的所有碎片的平均長度是多少。?
參考代碼:
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int main()
{
int count =
0;
int len =
0;
int start =
0;
int i;
string s;
cin >> s;
for (i =
1; i < s.length(); i++){
if (s[i] != s[start]){count++;len += i - start;start = i;}}
if (s[i -
1] == s[start]){count++;len += i - start;}
else{count++;len +=
1;}
cout << fixed << setprecision(
2) <<
1.0 * len / count << endl;
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
題目:?
小易有一個長度為N的正整數數列A = {A[1], A[2], A[3]…, A[N]}。?
牛博士給小易出了一個難題:?
對數列A進行重新排列,使數列A滿足所有的A[i] * A[i + 1](1 ≤ i ≤ N - 1)都是4的倍數。?
小易現在需要判斷一個數列是否可以重排之后滿足牛博士的要求。?
參考代碼:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int t;
cin >> t;
while (t--){
vector<vector<int>> state(
3,
vector<int>(
0));
int n;
cin >> n;
for (
int i =
0; i < n; i++){
int temp;
cin >> temp;
if ((temp &
3) ==
0){state[
2].push_back(temp);}
elseif ((temp &
1) ==
0){state[
1].push_back(temp);}
else{state[
0].push_back(temp);}}
if (state[
2].size() >= state[
0].size()){
cout <<
"Yes" << endl;}
elseif (state[
2].size() == state[
0].size() -
1){
if (state[
1].size() ==
0){
cout <<
"Yes" << endl;}
else{
cout <<
"No" << endl;}}
else{
cout <<
"No" << endl;}}
return 0;
}
總結
以上是生活随笔為你收集整理的[网易]2018校园招聘编程题真题集合的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。