欢迎来到Nepire的校OJ入门题解——————蓝桥选拔篇(五)
这次我主要是讲解第八届蓝桥杯全国软件和信息技术专业人才大赛校内选拔赛的七道题目,中间可能会扯到一些其他东西,然后就开始我们的入门题解吧呜喵
Problem E:几何题(二)
Description
在平面直角坐标系中,已知点P(x1,y1)和点Q(x2,y2)的坐标,求点P绕点Q顺时针旋转K度之后点R的坐标。
Input
输入数据的第一行有一个整数T,表示有T组测试数据。
每组数据有一行,包含五个实数x1,y1,x2,y2,k(-1000.0 < x1,y1,x2,y2,k < 1000)。Output
输出R的坐标以空格隔开,结果保留两位小数。
每组测试数据输出一行。Sample Input
1
0.00 1.00 0.00 0.00 90.00Sample Output
1.00 0.00
Source
解题思路
这题只要知道公式便可以很快的得出解题过程,公式的推导可以自行百度。
参考代码
#include <ctype.h>
#include <errno.h>
#include <float.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <wchar.h>
#include <wctype.h>
#include <assert.h>
#include <limits.h>
#include <locale.h>
#include <math.h>
#define pi acos(-1)
int main()
{
int i,n;
double x1,x2,y1,y2,k,x,y,a;
scanf("%d",&n);
while(n--)
{
scanf("%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&k);
a=k*pi/180;
x=(y1-y2)*sin(a)+(x1-x2)*cos(a)+x2;
y=(y1-y2)*cos(a)-(x1-x2)*sin(a)+y2;
printf("%.2lf %.2lf\n",x,y);
}
return 0;
}