去年的省赛题,简单的没话说。
Accepted | 2855 | C++ | 00:00.08 | 400K |
#include<stdio.h>
#include <math.h>
#define pi 3.1415926535
double mx, my;
bool contain(double x, double y, double x2, double y2, double x3, double y3)
{
return (x2 < x && y < y2 && x < x3 && y > y3);
}
char locate(double x, double y, double& w, double& n, double& e, double& s)
{
double cx = (w + e) / 2 ;
double cy = (n + s) / 2 ;
if (contain(x, y, w, n, cx, cy))
{
e = (w + e) / 2, s = (n + s) / 2 ;
return 'q' ;
}
if (contain(x, y, cx, cy, e, s))
{
w = (w + e) / 2, n = (n + s) / 2 ;
return 's' ;
}
if (contain(x, y, cx, n, e, cy))
{
w = (w + e) / 2, s = (n + s) / 2 ;
return 'r' ;
}
if (contain(x, y, w, cy, cx, s))
{
e = (w + e) / 2, n = (n + s) / 2 ;
return 't' ;
}
}
void solve(double longitude, double latitude, int level)
{
double n = my, s = -my, w = -mx, e = mx;
double x = longitude * pi / 180 ;
double y = log(tan(pi / 4 + (latitude * pi / 180) / 2 ));
printf("t" );
for(int i = 0; i < level; i++ )
printf("%c" , locate(x, y, w, n, e, s));
printf("/n" );
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("2855.txt","r" ,stdin);
#endif
double longitude, latitude, x, y;
int level;
mx = pi;
my = log(tan(pi / 4 + (85 * pi / 180) / 2 ));
while(scanf("%lf %lf %d", &longitude, &latitude, &level) != EOF)
solve(longitude, latitude, level);
#ifndef ONLINE_JUDGE
fclose(stdin);
#endif
return 0 ;
}
#include <math.h>
#define pi 3.1415926535
double mx, my;
bool contain(double x, double y, double x2, double y2, double x3, double y3)
{
return (x2 < x && y < y2 && x < x3 && y > y3);
}
char locate(double x, double y, double& w, double& n, double& e, double& s)
{
double cx = (w + e) / 2 ;
double cy = (n + s) / 2 ;
if (contain(x, y, w, n, cx, cy))
{
e = (w + e) / 2, s = (n + s) / 2 ;
return 'q' ;
}
if (contain(x, y, cx, cy, e, s))
{
w = (w + e) / 2, n = (n + s) / 2 ;
return 's' ;
}
if (contain(x, y, cx, n, e, cy))
{
w = (w + e) / 2, s = (n + s) / 2 ;
return 'r' ;
}
if (contain(x, y, w, cy, cx, s))
{
e = (w + e) / 2, n = (n + s) / 2 ;
return 't' ;
}
}
void solve(double longitude, double latitude, int level)
{
double n = my, s = -my, w = -mx, e = mx;
double x = longitude * pi / 180 ;
double y = log(tan(pi / 4 + (latitude * pi / 180) / 2 ));
printf("t" );
for(int i = 0; i < level; i++ )
printf("%c" , locate(x, y, w, n, e, s));
printf("/n" );
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("2855.txt","r" ,stdin);
#endif
double longitude, latitude, x, y;
int level;
mx = pi;
my = log(tan(pi / 4 + (85 * pi / 180) / 2 ));
while(scanf("%lf %lf %d", &longitude, &latitude, &level) != EOF)
solve(longitude, latitude, level);
#ifndef ONLINE_JUDGE
fclose(stdin);
#endif
return 0 ;
}