有一个水题,题目读懂就可以了,千万注意是“半圆”!!!
题目大意:已知一个圆心为(0,0),半径随时间增长的位于X轴上方的半圆,初始面积为0,每年的面积增加50,给出一个坐标,求该坐标在第几年被该半圆覆盖。
代码:
#include <stdio.h> int main() { int n; scanf("%d",&n); int i; double x,y; int year; for(i=1;i<=n;i++) { scanf("%lf%lf",&x,&y); //如果以(x,y)为半径的圆面积小于水域面积,就被淹没了,这样就不用求水域半径了 year=(int)((x*x+y*y)*3.1415926/100+1); //根据坐标计算年份 printf("Property %d: This property will begin eroding in year %d.\n",i,year); } printf("END OF OUTPUT.\n"); return 0; }
这段代码写的繁琐点,不过思路更清晰
#include <stdio.h> int main() { int n; scanf("%d",&n); int i; double x,y; int year; int area; double s; for(i=1;i<=n;i++) { scanf("%lf%lf",&x,&y); //如果以(x,y)为半径的圆面积小于水域面积,就被淹没了,这样就不用求水域半径了 s=3.1415926*(x*x+y*y)/2; area=0; for(year=1; ;year++) { area+=50; if(s<area) break; } printf("Property %d: This property will begin eroding in year %d.\n",i,year); } printf("END OF OUTPUT.\n"); return 0; }