2016年9月11日 腾讯校招在线笔试

主要是像记录一下两道编程笔试题。
其中第一题是有关质数的:
对输入的数,当两个质数之和等于该数的时候,输出这样的组合数目。比如给出的输入样例10,输出2(表示有两组这样的组合:5+5,3+7)
在编程的时候,思路是先一个对数据进行质数验证的函数:int zhishu_verify(int num)
然后逐个对满足和为输入数的组合进行是否均为质数的验证,如果均满足的话那就对计数器加1。

#include<stdio.h>
#include<iostream>
int zhishu(int input)
{
    int jj;
    for(jj = 2;jj<(input / 2) + 1;jj++)
    {
        if(0 == input % jj)
        {
            return 1;//fanhui 1 biaoshi bushi zhishu
        }
    }
    return 0;
}
void main(void)
{
    int num;
    int flg1;
    int flg2;
    int ii;

    int result = 0;
    scanf("%d",&num);
    for(ii = 2;ii<(num / 2) + 1;ii++ )
    {
        flg1 = zhishu(ii);
        flg2 = zhishu(num - ii);
        if((flg1 == 0) && (flg2 == 0))/biaoshi liangge doushi zhishu
        {
            result = result + 1;
        }
    }
    printf("%d\n",result);
    system("pause");
}

第二个题目是什么geohash编码的一部分,就是限定区间[-90,90],然后对数据进行类似于二分法的编码,但是精度为6(我的理解就是只取编码的前6位),比如输入样例80
step1:划分[-90 0],[0 90],属于右端,打印1;
step2:划分[0 45]和[45 90],属于右端,打印1;
step3:划分[45 67]和[67 90],属于右端,打印1;
step4:划分[67 78]和[78 90],属于右端,打印1;
step5:划分[78 84]和[84 90],属于左端,打印0;
step6:划分[78 81]和[81 84],属于左端,打印0;
这个整个的思路就是一个二分的过程,所以可以借鉴二分的程序,采用递归的方式。加入6位精度的限制,在递归的开始进行判断。

#include<stdio.h>
#include<iostream>
int binary(int* a,int low,int high,int cnt)
{
    if(cnt == 0)
    {
        return -1;
    }
    int mid = (high + low) / 2;
    if(*a >= mid)
    {
        printf("%d",1);
        low = mid;
        cnt = cnt - 1;
        binary(a,low,high,cnt);
    }
    else
    {
        printf("%d",0);
        high = mid;
        cnt = cnt - 1;
        binary(a,low,high,cnt);
    }
    return 0;
}
void main(void)
{
    int num;
    scanf("%d",&num);
    int high = 90;
    int low = -90;
    int cnt = 6;
    binary(&num,low,high,cnt);
    printf("\n");
    system("pause");
}

两个程序如果有不正确的地方,请大家指正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值