腾讯秋招笔试题答案

1.

#include 
#include 
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
2.

#include 
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<
3.

#include
#include
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<
4.
#include
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
5.

在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。

给定一个整数n,请返回n位的格雷码,顺序为从0开始。

测试样例:
1
返回:["0","1"]

class GrayCode {
public:
    vector getGray(int n) {
        vector v;  
        if(n == 1)  
        {  
            v.push_back("0");  
            v.push_back("1");  

            return v;  
        }  
        else  
        {  
            vector v = getGray(n - 1);  
            int vSize = v.size();  

            vector 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 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
    }
};




你可能感兴趣的:(C++)