【hihocoder】1237 : Farthest Point 微软2016校招在线笔试题

题目:给定一个圆,要你求出一个在里面或者在边上的整数点,使得这个点到原点的距离最大,如果有多个相同,输出x最大,再输出y最大。

思路:对于一个圆,里面整点个数的x是能确定的。你找到x的上下界就可以了。就是mix = ceil(x0-r)//因为是小的值,所以要向上取整。mxx=floor(x0+r)//大的值要向下取整

对于y。我们也能用欧股定理确定。y也是有一个范围。但是并不是所有y都要枚举的。明显。y的值是离圆心越远越好。所以对于每一个x而言只需要枚举最远的两个y值

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define inf (0x3f3f3f3f)
typedef long long int LL;

#include <iostream>
#include <sstream>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <string>
double xo,yo,r;
double dist(double xx1,double yy1,double xx2,double yy2)
{
    return sqrt((xx1-xx2)*(xx1-xx2) + (yy1-yy2)*(yy1-yy2));
}
double eps = 1e-7;
bool big (double a,double b)
{
    return (a-b)>eps;
}
bool same (double a,double b)
{
    return fabs(a-b)<eps;
}
void work ()
{
    int mix = (int)ceil(xo-r);
    int mxx = (int)floor(xo+r);
    double mxdis=-1;
    int ansx,ansy;
    for (int i=mix;i<=mxx;++i)
    {
        int yy = (int)floor((yo+sqrt(r*r-(i-xo)*(i-xo))));
        double tdis = dist(i,yy,xo,yo);
        if (big(tdis,mxdis))
        {
            mxdis = tdis; ansx = i; ansy = yy;
        }
        else if (same(tdis,mxdis)&&i>ansx)
        {
            mxdis = tdis; ansx = i; ansy = yy;
        }
        else if (same(tdis,mxdis)&&i==ansx&&yy>=ansy)
        {
            mxdis = tdis; ansx = i; ansy = yy;
        }

        yy = (int)ceil(yo-sqrt(r*r-(i-xo)*(i-xo)));
        tdis=dist(i,yy,xo,yo);
        if (big(tdis,mxdis))
        {
            mxdis = tdis; ansx = i; ansy = yy;
        }
        else if (same(tdis,mxdis)&&i>ansx)
        {
            mxdis = tdis; ansx = i; ansy = yy;
        }
        else if (same(tdis,mxdis)&&i==ansx&&yy>=ansy)
        {
            mxdis = tdis; ansx = i; ansy = yy;
        }
    }
    printf ("%d %d\n",ansx,ansy);
    return ;
}
int main()
{
#ifdef local
    freopen("data.txt","r",stdin);
#endif
    while(~scanf("%lf%lf%lf",&xo,&yo,&r)) work();
    return 0;
}

时间: 2024-10-21 07:34:05

【hihocoder】1237 : Farthest Point 微软2016校招在线笔试题的相关文章

阿里校招在线笔试题。。。感觉被虐了

1.按照CommonJS规范,在任何模块代码的作用域下内置了以下哪些变量? module context require exports 2.一下方法中哪些存在兼容性问题? spilt indexof trim Date.parse 3.下面哪些技术可用于优化 CSS 图片加载 ? ·       CSSSprite ·       SVGSprite ·       Iconfont ·       Base64 4.有一道选择题问哪些是html5的新特性. 5.从前端工程师的角度如何提高页面

2015微软实习在线笔试题 - Professor Q&#39;s Software

时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Professor Q develops a new software. The software consists of N modules which are numbered from 1 to N. The i-th module will be started up by signal Si. If signal Si is generated multiple times, the i-th module

2015年阿里巴巴校招研发工程师在线笔试题汇总

在线笔试题汇总 卷一: 1.下面的函数中哪个是系统调用而不是库函数______? printf scanf fgetc read print_s scan_s 2.某足球队有四名外援,分别来自巴西.荷兰.意大利和美国.他们分别擅长前锋.后卫或守门,其中: ① 美国外援单独擅长守门: ② 意大利外援不擅长前锋: ③ 巴西外援和另外某个外援擅长相同的位置: ④ 荷兰外援擅长的位置和巴西外援不同. 以上条件可以推出巴西外援擅长的位置是______. 前锋 守门 后卫 前锋或守门 后卫或守门 前锋或后卫

&lt;转&gt;网易2016实习生前端笔试题部分总结

网易2016实习生前端笔试题部分总结 原文地址:http://www.cnblogs.com/venoral/p/5325202.html 这只是部分题,答案为个人观点如有错误欢迎指出,感觉考点都挺基础,但是很注重考细节方面,通过整理也知道自己在CSS3和HTML5,网络知识等方面的不足还是得多学多练多思考.攒rp,希望自己在明天360笔试中能轻松答过~ css 1.多选 //HTML <p>很长的一段文字,很长的一段文字,很长的一段文字,特别长的文字</p> //CSS p{ w

谷歌2013校招全套笔试题

1.1 B 1G字节的数据需要处理1G次.而当代pc的频率的数量级就是GHZ级的(我的PC是2.5GHZ) 1.2 D 为了高效利用流水线而调整指令的顺序就可以减少指令的运行时间. 1.3  B sprintf用于将格式化的数据写入缓冲区. foo()函数返回的是一个数组地址,但是该数组(X)是一个局部变量,在foo()函数调用结束后该地址就成为了无效地址.如果地址中的内容没有改变的话就会输出world.当然,如果该地址呗回收,就会输出错误信息. 1.4 A (x1-1)+(x2+1)+(x3+

2014阿里巴巴WEB前端实习生在线笔试题

2014年3月31日晚,我怀着略微忐忑的心情(第一次在线笔试^_^!!)进行了笔试,阿里巴巴的笔试题共有10道,几乎包含了Web前端开发的各个方面,有程序题.有叙述题,时间非常紧张,只完成了大概6道题.下面把遇到的题目跟大家分享一下! 1. <pre name="code" class="html"><!doctype html> <html> <head> <style type="text/css&

48行代码解一道亚马逊的在线笔试题

这题是我从这里看到的一道亚马逊的在线笔试题,具体规则请前往该文章查看,下面贴出我的解题代码: 其中11,12,13,14分别代表J,Q,K,A; class CardCompare { private int[] cards = new int[] { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }; public bool CompareCards(int[] cards1, int[] cards2) { return cardsScore(card

2015阿里巴巴前端实习生在线笔试题

Summary 大公司开始招实习生了,我也变成过来人了,品味到之前的酸甜苦辣,除了加油好像也没法说那么多. 因为是你在奋斗,心态这件事是你们在掌握的.但是我们唯一能提供的是我们topview实验室新鲜出炉的面经和笔试. (其实我在想有没应届生春招 - -!) Where 2015阿里巴巴前端实习生在线笔试题

2015.8.29某高级企业的在线笔试题

收集了今年阿里的在线笔试题,贴出来供需要的朋友参考. 1.下面的函数中哪个是系统调用而不是库函数______?printfscanffgetcreadprint_sscan_s 2.某足球队有四名外援,分别来自巴西.荷兰.意大利和美国.他们分别擅长前锋.后卫或守门,其中:① 美国外援单独擅长守门:② 意大利外援不擅长前锋:③ 巴西外援和另外某个外援擅长相同的位置:④ 荷兰外援擅长的位置和巴西外援不同.以上条件可以推出巴西外援擅长的位置是______.前锋守门后卫前锋或守门后卫或守门前锋或后卫 3