腾讯校招题目

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xumeng7231488/article/details/78478031

[编程题] 素数对

时间限制:1秒

空间限制:32768K

给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。
如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7)) 
输入描述:
输入包括一个整数n,(3 ≤ n < 1000)


输出描述:
输出对数

输入例子1:
10

输出例子1:
2
#include<stdio.h>
#include<string.h>
bool isprime(int x)
{
    int sum=0;
    for(int i=2;i*i<=x;i++)
    {
        if(x%i==0)
        {
            sum+=1;
            break;
        }          
    }
    if(sum==0)
        return true;
    else 
        return false;
}
int main()
{
    int n,sum=0;
    scanf("%d",&n);
    for (int i=2;2*i<=n;i++)
    {
        if(isprime(i)&&isprime(n-i))
           sum+=1; 
    }
    printf("%d",sum);
    return 0;
    
    
}


[编程题] geohash编码

时间限制:1秒

空间限制:32768K

geohash编码:geohash常用于将二维的经纬度转换为字符串,分为两步:第一步是经纬度的二进制编码,第二步是base32转码。
此题考察纬度的二进制编码:算法对纬度[-90, 90]通过二分法进行无限逼近(取决于所需精度,本题精度为6)。注意,本题进行二分法逼近过程中只采用向下取整来进行二分,针对二分中间值属于右区间。算法举例如下: 针对纬度为80进行二进制编码过程:
1) 区间[-90, 90]进行二分为[-90, 0),[0, 90],成为左右区间,可以确定80为右区间,标记为1;
2) 针对上一步的右区间[0, 90]进行二分为[0, 45),[45, 90],可以确定80是右区间,标记为1;
3) 针对[45, 90]进行二分为[45, 67),[67,90],可以确定80为右区间,标记为1;
4) 针对[67,90]进行二分为[67, 78),[78,90],可以确定80为右区间,标记为1;
5) 针对[78, 90]进行二分为[78, 84),[84, 90],可以确定80为左区间,标记为0;
6) 针对[78, 84)进行二分为[78, 81), [81, 84),可以确定80为左区间,标记为0;

输入描述:
输入包括一个整数n,(-90 ≤ n ≤ 90)


输出描述:
输出二进制编码

输入例子1:
80

输出例子1:
111100
#include<stdio.h>
#include<string.h>
int main()
{
    int n;
    scanf("%d",&n);
    int low=-90,high=90;
    
    for (int i=0;i<6;i++)
    {
        int middle=(low+high)/2;
        if(n>=middle)
        {
            low=middle;
            printf("1");
        }
        else
        {
            high=middle;
            printf("0");
        }
    }

    return 0;
}
[编程题] 游戏任务标记

时间限制:1秒

空间限制:32768K

游戏里面有很多各式各样的任务,其中有一种任务玩家只能做一次,这类任务一共有1024个,任务ID范围[1,1024]。请用32个unsigned int类型来记录着1024个任务是否已经完成。初始状态都是未完成。 输入两个参数,都是任务ID,需要设置第一个ID的任务为已经完成;并检查第二个ID的任务是否已经完成。 输出一个参数,如果第二个ID的任务已经完成输出1,如果未完成输出0。如果第一或第二个ID不在[1,1024]范围,则输出-1。 
输入描述:
输入包括一行,两个整数表示人物ID.


输出描述:
输出是否完成

输入例子1:
1024 1024

输出例子1:
1

#include<stdio.h>
#include<string.h>
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    if(((a>1024)||(a<1))||((b>1024)||(b<1)))
       printf("-1");
    else if(a==b)
        printf("1");
    else printf("0");
    return 0;
}




























猜你喜欢

转载自blog.csdn.net/xumeng7231488/article/details/78478031