安徽省2016“京胜杯”程序设计大赛_E_转啊转
来源:互联网 发布:知乎 后端必看的书 编辑:程序博客网 时间:2024/04/28 15:45
转啊转
Time Limit: 1000 MSMemory Limit: 65536 KBTotal Submissions: 59Accepted: 15Description
在二维平面上,有一个固定的圆和一个固定的点(保证该点不在圆上),还有一个动点在圆上以角速度w绕圆心一直转。在t时刻,连接该动点与定点成一条直线k,求直线k被圆所截线段的长度(即直线k在圆内部分长度)。
动点初始时刻在圆的三点钟方向(即与x轴正方向平行),并以逆时针方向绕圆转。
Input
先输入一个整数T,表示T(T<50)组数据。
每组数据一行七个实数a,b,r(r>0),x,y,w(w>=0),t(t>=0) 分别表示圆的圆心坐标(a,b),半径r,固定点坐标(x,y),角速度w,要查询的时刻t。
上述所有数据的绝对值小于10000。
Output
输出答案占一行,保留2位小数。
Sample Input
1
1 1 1 3 1 3 0
1 1 1 3 1 3 0
Sample Output
2.00
Hint
角速度定义:
一个以弧度为单位的圆(一个圆周为2π,即:360度=2π),在单位时间内所走的弧度即为角速度。
这道题在省赛时没有做出来,真的是很亏,考得纯粹的数学题
题解,这道题也是比较简单的,注意点到直线的公示
点(a, b),直线:y=kx+b;
距离d=|kx-y+b|/√[k²+(-1)²] ;
然后就是点B的表示方式:B(a+rcos(wt), b+rsin(wt));
有这几个就可以把这道题给写好了
#include <iostream>#include <cstdio>#include <cmath>using namespace std;int main(){ int T; scanf("%d", &T); while (T--) { double a, b, r, x, y, w, t; scanf("%lf%lf%lf%lf%lf%lf%lf", &a, &b, &r, &x, &y, &w, &t); double bx = a + r * cos(w*t); double by = b + r * sin(w*t); double k = (by - y) / (bx - x);//斜率k double l = y - k * x; double d = pow(k * a - b + l, 2) / (k * k + 1);//点到直线的距离公式 double ans = sqrt(r * r - d) * 2; printf("%.2lf\n", ans); } return 0;}
2 0
- 安徽省2016“京胜杯”程序设计大赛_E_转啊转
- 安徽省2016“京胜杯”程序设计大赛_C_箭无虚发
- 安徽省2016“京胜杯”程序设计大赛_K_纸上谈兵
- 安徽省2016“京胜杯”程序设计大赛_A_砝码称重
- 安徽省2016“京胜杯”程序设计大赛_B_阵前第一功
- 安徽省2016“京胜杯”程序设计大赛_D_梯田AGAIN
- 安徽省2016“京胜杯”程序设计大赛_F_吃在工大
- 安徽省2016“京胜杯”程序设计大赛_G_木条染色
- 安徽省2016“京胜杯”程序设计大赛_H_单身晚会
- 安徽省2016“京胜杯”程序设计大赛_I_恶魔A+B
- 安徽省2016“京胜杯”程序设计大赛_J_YZK的大别墅
- 2016年安徽省程序设计竞赛-转啊转
- 2015年安徽省程序设计大赛题,梯田问题题解
- 2017年“华信智原杯”安徽省大学生程序设计大赛C题刷票
- 经验总结 2016年安徽省程序设计竞赛总结
- H.图像匹配(安徽省2014年“京胜杯”大学生程序设计竞赛)
- 安徽省2015年“京胜杯”大学生程序设计竞赛-数七问题
- 2016年安徽省程序设计竞赛 水题C,D,E 题解
- 横竖屏时Activity的生命周期
- 动态规划之0-1背包问题
- 内部排序之插入排序(InsertSort)
- 微信开发中消息接收、回复及事件处理通用函数与php语法的详解(index.php文件)
- spring、hibernate、struts2整合
- 安徽省2016“京胜杯”程序设计大赛_E_转啊转
- 网友对闭包的总结
- 清除Eclipse中的多余workspace项
- 彼得德鲁克名言
- 自己写的--瀑布流
- 简单的servlet mvc实现
- 第四周 项目3 单链表应用
- POJ 2449 第k短路 Dijkstra+A*
- WIN7下OpenCV2.4.9+ vs2010的配置过程