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;
    }
    

      

  • 相关阅读:
    Libevent库学习笔记
    最大的k个数问题
    MongoDB之整库备份还原单表collection备份还原
    精通MATLAB混合编程
    AutoCAD 2016中文版从入门到精通(第2版)
    MATLAB科学计算范例实战速查宝典
    Android系统应用开发实战详解
    AutoCAD快捷命令速查大全
    TCP IP入门经典(第5版)
    STC8系列单片机开发指南:面向处理器、程序设计和操作系统的分析与应用
  • 原文地址:https://www.cnblogs.com/xlturing/p/3300524.html
Copyright © 2011-2022 走看看