D. Max and Bike

For months Maxim has been coming to work on his favorite bicycle. And quite recently he decided that he is ready to take part in a cyclists' competitions.

He knows that this year n competitions will take place. During the i-th competition the participant must as quickly as possible complete a ride along a straight line from point si to point fi (si < fi).

Measuring time is a complex process related to usage of a special sensor and a time counter. Think of the front wheel of a bicycle as a circle of radius r. Let's neglect the thickness of a tire, the size of the sensor, and all physical effects. The sensor is placed on the rim of the wheel, that is, on some fixed point on a circle of radius r. After that the counter moves just like the chosen point of the circle, i.e. moves forward and rotates around the center of the circle.

At the beginning each participant can choose any point bi, such that his bike is fully behind the starting line, that is, bi < si - r. After that, he starts the movement, instantly accelerates to his maximum speed and at time tsi, when the coordinate of the sensor is equal to the coordinate of the start, the time counter starts. The cyclist makes a complete ride, moving with his maximum speed and at the moment the sensor's coordinate is equal to the coordinate of the finish (moment of time tfi), the time counter deactivates and records the final time. Thus, the counter records that the participant made a complete ride in time tfi - tsi.

Maxim is good at math and he suspects that the total result doesn't only depend on his maximum speed v, but also on his choice of the initial point bi. Now Maxim is asking you to calculate for each of n competitions the minimum possible time that can be measured by the time counter. The radius of the wheel of his bike is equal to r.

Input

The first line contains three integers nr and v (1 ≤ n ≤ 100 000, 1 ≤ r, v ≤ 109) — the number of competitions, the radius of the front wheel of Max's bike and his maximum speed, respectively.

Next n lines contain the descriptions of the contests. The i-th line contains two integers si and fi (1 ≤ si < fi ≤ 109) — the coordinate of the start and the coordinate of the finish on the i-th competition.

Output

Print n real numbers, the i-th number should be equal to the minimum possible time measured by the time counter. Your answer will be considered correct if its absolute or relative error will not exceed 10 - 6.

Namely: let's assume that your answer equals a, and the answer of the jury is b. The checker program will consider your answer correct if .

Sample test(s)
input
2 1 2
1 10
5 9
output
3.849644710502
1.106060157705 题意:给你一个f,s点,一个轮子有向右的速度v,任取轮子上,一点旋转过去,问你最少多少时间
题解
可以先算出至少圈度,再二分算出多余的角度 , 利用对于圆角度 2*x=2*r*sin(@/2);
二分。
///
#include<bits/stdc++.h>
using namespace std ;
typedef long long ll;
#define mem(a) memset(a,0,sizeof(a))
#define meminf(a) memset(a,127,sizeof(a)); inline ll read()
{
ll x=,f=;char ch=getchar();
while(ch<''||ch>''){
if(ch=='-')f=-;ch=getchar();
}
while(ch>=''&&ch<=''){
x=x*+ch-'';ch=getchar();
}return x*f;
}
//****************************************
const double PI = 3.1415926535897932384626433832795;
const double EPS = 5e-;
#define maxn 100000+500
#define mod 1000000007 int main() {
for (int n, r, v; ~scanf("%d %d %d", &n, &r, &v); ) {
for (int i = ; i < n; ++i) {
int s, f;
scanf("%d %d", &s, &f);
double dist = f - s;
double t = floor(dist / ( * PI * r));
double remain = dist - t * * PI * r;
double lower = , upper = * PI;
while (lower + 1e- < upper) {
double mid = (lower + upper) / ;
if ( * sin(mid / ) * r + mid * r < remain) {
lower = mid;
} else {
upper = mid;
}
}
double len = t * * PI * r + upper * r;
printf("%.12f\n", len / v);
}
}
return ;
}

代码

最新文章

  1. Backbone源码解析(五):Route和History(路由)模块
  2. 【转】【C#】【Thread】【Parallel】并行计算
  3. zabbix 的学习应用之路
  4. [Android Pro] 监听内容提供者ContentProvider的数据变化
  5. Redis(7)Creating and Using Cluster Mode
  6. 关于lib,dll,.a,.so,静态库和动态库的解释说明
  7. 【转】larbin主要代码说明
  8. html-----012---颜色的改变
  9. win7/win8 64位系统注册TeeChart8.ocx 控件---以及dllregisterserver调用失败问题解决办法
  10. CSS3新特性罗列
  11. Oracle左连接、右连接、全外连接以及(+)号用法(转)
  12. Android 面试题(转)
  13. 小哈学Python第三课-字符集编码
  14. k64 datasheet学习笔记39---Programmable Delay Block (PDB)
  15. c语言希尔排序,并输出结果(不含插入排序)
  16. bzoj 3631 松鼠的新家 (树链剖分)
  17. Shell-求平均
  18. linux环境,通过rpm删除mysql包,报错:error reading information on service mysqld: Invalid argument
  19. css设置input不显示光标
  20. Eclipse 乱码 解决方案总结(UTF8 -- GBK)

热门文章

  1. Laravel5.1学习笔记19 EloquentORM 入门
  2. C语言标准库头文件
  3. 实现微信小程序的wxml文件和wxss文件在phpstrom的支持
  4. 支付宝小程序日期选择组件datePicker封装
  5. 移动web——bootstrap模板
  6. JavaScript学习书签
  7. Discuz! G变量的使用方法
  8. transform: scale(x,y)
  9. HTML5轻松实现全屏视频背景
  10. Codeforces Round #467 Div.2题解