微软2016校园招聘9月在线笔试题解

微软2016校园招聘9月在线笔试题解

题目网址列表:http://hihocoder.com/contest/mstest2015sept2/problems

题目一分析:

问题描述:在二维坐标系中,给定一个圆的圆心坐标x,y,半径r,这个三个数是浮点数,在圆内或者圆边上找一个整数点(x,y坐标都是整数的点)使该点到圆心的距离最大,如果有多个这样的点,选择x坐标最大的点,如果还有多个点存在,则选择y坐标最大的点。

解体思路:通过枚举x,求y的最大值或者最小值。在程序中需要注意y值最大最小值的求法,可以调用cmath包中的函数 floor 和ceil函数,可以看下图进行理解,其中add_y就是程序中的变量。


#include <iostream>
#include <stdio.h>
#include <string.h>
#include <string>
#include <algorithm>
#include <vector>
#include <map>
#include <list>
#include <queue>
#include <cmath>

#define eps 1e-7
using namespace std;
double x,y,r,MaxDis,res_x,res_y;
//计算两点之间的距离
double cal_dis(int x1,int y1)
{
    return sqrt((x-x1)*(x-x1) + (y-y1) * (y-y1));
}

//判断新的坐标是否更新已有的坐标
void judge(int x1,int y1)
{
    double dis = cal_dis(x1,y1);
    if(dis > MaxDis + eps)
    {
        MaxDis = dis;
        res_x = x1;
        res_y = y1;
    }
    else if(abs(dis - MaxDis) < eps)
    {
        if(x1 > res_x)
        {
            res_x = x1;
            res_y = y1;
        }
        else if(x1 == res_x && y1 > res_y)
        {
            res_y = y1;
        }
    }
}

int main()
{
    int cur_x,cur_y;
    while(cin >> x >> y >> r)
    {
        MaxDis = 0;
        // 枚举x坐标
        for(int i = -(r + 3);i<=r + 2;i++)
        {
            // 得到当前x的坐标
            cur_x = int(x) + i;
            //判断x坐标是否超出圆外
            if(abs(cur_x - x) >= r + eps)
                continue;
            double add_y = sqrt(r * r - (cur_x - x) * (cur_x - x));
            //获得最大的y轴坐标
            cur_y = floor(y + add_y);
            judge(cur_x,cur_y);
            //cout << cur_x << " ==== " << cur_y << endl;
            //获得最小的y轴坐标
            cur_y = ceil(y - add_y);
            judge(cur_x,cur_y);
            //cout << cur_x << " ==== " << cur_y << endl;
        }

        cout << res_x << " " << res_y << endl;

    }
    return 0;
}
</pre><pre name="code" class="cpp">
题目二分析:
题目描述:n个城市,每条道路连接两个城市,n-1条道路正好把n个城市连接成一颗树,求解下面sum的值:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlIAAABCCAYAAACcljjBAAAXbElEQVR4Ae2d3etl0x/Hz/xyiwZXkyTjgpDSeEgoipELERkPJVem4YrkYZDkocYFpTDkwgWGuDQey5RBjIe4kBsjCVckzR/w/fXav9/7+Jz1XWs/nbPPnHPmvep8997r4bM+67U+a63PXufs/d2wtra2NnIwARMwARMwARMwARPoTOA/nUu4gAmYgAmYgAmYgAmYQEXAjpQNwQRMwARMwARMwAR6ErAj1ROci5mACZiACZiACZiAHSnbgAmYgAmYgAmYgAn0JGBHqic4FzMBEzABEzABEzABO1K2ARMwARMwARMwARPoScCOVE9wLmYCJmACJmACJmACdqRsAyZgAiZgAiZgAibQk4AdqZ7gXMwETMAETMAETMAE7EjZBkzABEzABEzABEygJwE7Uj3BuZgJmIAJmIAJmIAJ2JGyDZiACZiACZiACZhATwJ2pHqCczETMAETMAETMAETsCNlGzABEzABEzABEzCBngTsSPUE52ImYAImYAImYAImYEfKNmACJmACJmACJmACPQnYkeoJzsVMwARMwARMwARMwI6UbcAETMAETMAETMAEehKwI9UTnIuZgAmYgAmYgAmYgB0p24AJmIAJmIAJmIAJ9CRgR6onuEUo9tdff42eeuqp0bnnnrsI6lgHEzABEzABEzjiCBx1xLV4RRr8xhtvjF555ZXRgQMHRuedd96KtMrNMAETMAETMIHlIuAdqeXqr7G2//zzz+j9998f3X///eM4n5iACZiACZiACcyXgB2p+fKeWW3bt2+fmSwLMgETMAETMAET6EfAjlQ/bi5lAiZgAiZgAiZgAiM7UjaCWgL8oP3TTz8d59E1x0UL33///ejnn38eq8U1H4d2BGC3YcOG0R133LGuwJVXXlmlrUvoECEZsY86FF+prLA49dRTB28TrHkgpS4wvnN9HsvINppkxTLxnDqwrUXre35rmgvEl/SlDfRfUyiNpaZySqd8ST/lGfJYZ6PYyzzst0v7NL802XIXma3zrjksNYFdu3atbd26tdiGPXv2rI1Go9afKGvv3r1rW7ZsWdu4cePa7t2715Cl65ivWHnHhL66/vnnn2vbtm0b68Y1+qErbd+/f39HTY7M7AcPHqx45Vq/Y8eOqv9zaW3jkIG9OqxV9om9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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值