Advertisement

【poj1005】I Think I Need a Houseboat 题解&代码(c++)

阅读量:

题目链接


http://poj.org/problem?id=1005


题解


通过借助翻译工具终于理解了题目的意思。然而面对出题人没有给出数据范围这一点确实让人感到不满。在解题的过程中我由于疏忽地忽略了陆地是半圆形消失的事实导致计算半径时出现了错误。这实在是因为我不了解数据范围而不得不采用二分法来解决问题无奈之下也只能采用这种方法了。经过一番思考我认为这是唯一能够快速解决问题的方法了。


代码


复制代码
    #include<iostream>
    #include<algorithm>
    #include<stdio.h>
    using namespace std;
    int n,a[100005];
    double x,y;
    int main()
    {
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
    {
        cin>>x>>y;
        int ans=1,l=1,r=1000;
        double dis=x*x+y*y;
        while(l<=r)
        {
            int mid=(l+r)/2;
            double tmp=(double)mid*100.0/3.1415;
            if (dis>tmp)
            l=mid+1;
            else
            {
                ans=mid;
                r=mid-1;
            }
        }
        a[i]=ans;
    }
    for (int i=1;i<=n;i++)
    printf("Property %d: This property will begin eroding in year %d.\n",i,a[i]);
    printf("END OF OUTPUT.\n");
    
    }

全部评论 (0)

还没有任何评论哟~