腾讯秋招笔试题答案
程序员文章站
2022-06-09 11:03:30
...
1.
#include <iostream>
#include <string.h>
using namespace std;
char str[101];
int base[4];
int main()
{
while(cin>>str)
{
int len = strlen(str);
base[3] = 1;
for(int i=2;i>=0;i--)
{
base[i] = base[i+1]*25+1;
}
int _index = 0;
for(int j=0;j<len;j++)
{
_index += ((str[j]-'a')*base[j]+1);
}
cout<<_index-1<<endl;
}
return 0;
}
2.
#include <iostream>
using namespace std;
unsigned int arr[32];
int main()
{
int id1, id2;
while(cin>>id1>>id2)
{
int group1 = (id1-1)/32, group2 = (id2-1)/32;
if(!(id2>=1&&id2<=1024))
{
cout<<-1<<endl;
continue;
}
arr[group1] |= (1<<((id1-1)%32));
cout<<( (arr[group2] & (1<<((id2-1)%32))) != 0)<<endl;
}
return 0;
}
3.
#include<iostream>
#include<math.h>
using namespace std;
bool isPrime(unsigned int num)
{
for(int i=2;i<=sqrt(num);i++)
if(num%i==0)
return false;
return true;
}
int main()
{
unsigned int number;
while(cin>>number)
{
unsigned int index=0;
for(int i=2;i<=(number/2);i++)
{
if(isPrime(i))
if(isPrime(number-i))
index++;
}
cout<<index;
}
return 0;
}
4.#include<iostream>
using namespace std;
int main()
{
double test;
while(cin>>test)
{
int start=-90,end=90;
for(int i=0;i<6;i++)
{
int mid=(int)((start+end)/2);
if(test<mid)
{
end=mid;
cout<<0;
}
else
{
start=mid;
cout<<1;
}
}
}
return 0;
}
5.
在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。
给定一个整数n,请返回n位的格雷码,顺序为从0开始。
测试样例:
1
返回:["0","1"]
class GrayCode {
public:
vector<string> getGray(int n) {
vector<string> v;
if(n == 1)
{
v.push_back("0");
v.push_back("1");
return v;
}
else
{
vector<string> v = getGray(n - 1);
int vSize = v.size();
vector<string> v2;
for(int i = 0; i < vSize; i++)
{
if(i % 2 == 0)
{
v2.push_back(v[i]+"0");
v2.push_back(v[i]+"1");
}
else
{
v2.push_back(v[i]+"1");
v2.push_back(v[i]+"0");
}
}
return v2;
}
// write code here
}
};
6.
春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。
给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。
若没有金额超过总数的一半,返回0。
测试样例:
[1,2,3,2,2],5
返回:2
class Gift {
public:
int getValue(vector<int> gifts, int n) {
int result,value=0;
for(int i = 0;i < n;++i){
result=0;
for(int j = 0;j < n;++j){
if(j!=i)
{
if(gifts[j]==gifts[i])
{
result++;
}
}
}
if(result>n/2)
{
value=gifts[i];
break;
}
}
return value;
// write code here
}
};
上一篇: 蔬菜汁的做法有哪些,这样做又好喝又健康
下一篇: php定时执行任务设置详解