CF 404B
题意
跑马拉松,给出方形跑道的边长,以及每次休息间隔之间能跑的长度,问每次休息的时候的坐标,一共问n次。
思路
马拉松的总长度可以n*d+0.5直接求出来
对于每次的位置,取这个时刻跑的距离的最后一小段,那段没跑全一条边长的。
直到了最后那段长度,我们再用跑过的边长数模4,就能知道现在处在哪一条边长上,对应不同的边长不同的表达式。
代码
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int main()
{
double a,d;//1e5
int n;
scanf("%lf %lf %d",&a,&d,&n);
ll ans;
for(int i=1;i<=n;i++)//n次坐标展示
{
ans=i*d/a;//找所处段
double remain=i*d-a*ans;
int duan=ans%4;
switch(duan)
{
case 0://左侧
printf("%lf 0.000000\n",remain);
break;
case 1:
printf("%lf %lf\n",a,remain);
break;
case 2:
printf("%lf %lf\n",a-remain,a);
break;
case 3:
printf("0.000000 %lf\n",a-remain);
break;
}
}
return 0;
}