zoukankan      html  css  js  c++  java
  • ZOJ Problem Set

    这道题目说白了是一道平面几何的数学问题,重在理解题目的意思:

    题目说,弗雷德想买地盖房养老,但是土地每年会被密西西比河淹掉一部分,而且经调查是以半圆形的方式淹没的,每年淹没50平方英里,以初始水岸线为x轴,平分半圆为y轴,建立如下图的坐标系

    问题:给出坐标点(y>0),让你判断在那一年这个坐标点会被淹没。

    解决方案:我们可以转换成的数学模型是来比较坐标点到原点的距离与半圆半径的大小即可知道该点是否被淹没,公式如下:

    1.由于每年半圆面积增长50平方英里,可得半径递推公式R2=sqrt(100/pi+R1*R1) 注:初始R1设置为0,则把最开始情况包括进去。

    2.计算机坐标到原点的距离,就是勾股定理:distance=sqrt(x*x+y*y)

    3.最后将两者进行比较:R2<distance 注:这里用小于号,因为题目要求点在边界不算淹没。

    4.由于比较时两边都有开根号,那我们直接比较两者的平方即可,省去sqrt。(注:这里应该有个精度的问题,我开始用了sqrt,zoj里A不过,后来去掉过了)

    代码如下:

    #include <stdio.h>
    #include <math.h>
    #define pi 3.141592653
    
    int main()
    {
    	double r1=0,r2,x,y;
    	int n;
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++)
    	{
    		scanf("%lf%lf",&x,&y);
    		double distance=x*x+y*y;
    		int year=1;
    
    		for(r1=0;r2=(100/pi+r1*r1),r2<distance;r1=sqrt(r2))
    			year++;
    
    		printf("Property %d: This property will begin eroding in year %d.
    ",i,year);
    	}
    	printf("END OF OUTPUT.
    ");
    	return 0;
    }
    

      

  • 相关阅读:
    C#中关于DBNULL的处理方法
    html 点击复制
    AJAX的简洁写法
    PHP 数组模糊查询
    PHP二维数组搜索返回数组
    php 数组排序得方法
    PHPExcel的使用
    使用PHPword中文乱码并且下载的方法
    关于多图上传的修改的操作
    把一个表里的两列或者三列合并为一行
  • 原文地址:https://www.cnblogs.com/xlturing/p/3300524.html
Copyright © 2011-2022 走看看