CodeForces 404 Marathon ( 浮点数取模 -- 模拟 )
1 second
256 megabytes
standard input
standard output
Valera takes part in the Berland Marathon. The marathon race starts at the stadium that can be represented on the plane as a square whose lower left corner is located at point with coordinates (0, 0) and
the length of the side equals a meters. The sides of the square are parallel to coordinate axes.
As the length of the marathon race is very long, Valera needs to have extra drink during the race. The coach gives Valera a bottle of drink each d meters
of the path. We know that Valera starts at the point with coordinates (0, 0) and runs counter-clockwise. That is, when Valera covers a meters,
he reaches the point with coordinates (a, 0). We also know that the length of the marathon race equalsnd + 0.5 meters.
Help Valera's coach determine where he should be located to help Valera. Specifically, determine the coordinates of Valera's positions when he covers d, 2·d, ..., n·d meters.
The first line contains two space-separated real numbers a and d (1 ≤ a, d ≤ 105),
given with precision till 4 decimal digits after the decimal point. Number a denotes
the length of the square's side that describes the stadium. Number d shows that after each d meters
Valera gets an extra drink.
The second line contains integer n (1 ≤ n ≤ 105) showing
that Valera needs an extra drink n times.
Print n lines, each line should contain two real numbers xi and yi,
separated by a space. Numbers xi and yi in
the i-th line mean that Valera is at point with coordinates (xi, yi) after
he covers i·d meters. Your solution will be considered correct if the absolute or relative error doesn't exceed 10 - 4.
Note, that this problem have huge amount of output data. Please, do not use cout stream for output in this problem.
2 5
2
1.0000000000 2.0000000000
2.0000000000 0.0000000000
4.147 2.8819
6
2.8819000000 0.0000000000
4.1470000000 1.6168000000
3.7953000000 4.1470000000
0.9134000000 4.1470000000
0.0000000000 2.1785000000
0.7034000000 0.0000000000
分析如图所看到的:
给出正方形跑道的边长a。每走d米求一次坐标。
浮点数的取模处理。当时做题的时候不知道浮点数取模函数:fmod()
百度百科:fmod
fmod - C函数名: fmod
功 能:计算x对y的模,即x/y的求余运算 。若y是0。则返回NaN
用 法:double fmod(double x,double y);
须要头文件: math.h
例程:
#include < stdio.h>
#include < math.h>
int main(void)
{
double x = 5.0,y = 2.0;
double result;
result = f mod(x,y);
printf("The remainder of (%lf / %lf) is \%lf\n",x,y,result);
return 0;
}
执行结果是:The remainder of (5.000000/2.000000) is 1.000000
知道这个函数之后。题目就很好做了:
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
const int Inf=(1<<31)-1;
const double Eps=1e-15;
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
double a,d,l,s;
int i,j,n;
while(scanf("%lf%lf",&a,&d) !=EOF){
scanf("%d",&n);
l=a*4.0;
for(i=1; i<=n; i++){
s=fmod(i*d,l);
int flag=1;
while(s-a >0){
s-=a;
flag++;
}
if(fabs(s-a)<Eps){
s=0.0;
flag++;
} if(flag ==1){
printf("%.10lf %.10lf\n",s,0.0);
}
else if(flag == 2){
printf("%.10lf %.10lf\n",a,s);
}
else if(flag == 3){
printf("%.10lf %.10lf\n",a-s,a);
}
else {
printf("%.10lf %.10lf\n",0.0,a-s);
} } }
return 0;
}
精简代码:
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
const int Inf=(1<<31)-1;
const double Eps=1e-1;
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
double a,d,x,y,s=0.0;
int n;
scanf("%lf%lf%d",&a,&d,&n);
for(int i=1; i<=n; i++){
s+=d;
s=fmod(s,4*a);
if(s <= a)x=s,y=0;
else if(s <=2*a)x=a,y=s-a;
else if(s <=3*a)x=a-(s-2*a),y=a;
else x=0,y=a-(s-3*a);
printf("%lf %lf\n",x,y);
}
return 0;
}
CodeForces 404 Marathon ( 浮点数取模 -- 模拟 )的更多相关文章
- C语言fmod()函数:对浮点数取模(求余)
头文件:#include <math.h> fmod() 用来对浮点数进行取模(求余),其原型为: double fmod (double x); 设返回值为 ret,那么 x = ...
- fmod()函数 (对浮点数取模)
头文件:#include <math.h> fmod() 用来对浮点数进行取模(求余),其原型为: double fmod (double x); 设返回值为 ret,那么 x = ...
- Codeforces 521C (经典)组合数取模【逆元】
<题目链接> <转载于 >>> > 题目大意:给出一串n个数字,让你在这串数字中添加k个 ' + ' 号(添加后表达式合法),然后所有拆分所得的所有合法表达 ...
- codeforces 404 B Marathon【fmod对浮点数取余】
题意:给出一个边长为a的正方形,给出d,给出n,输出走得距离为i个d的时候的坐标 学习的这一篇 http://blog.csdn.net/synapse7/article/details/215956 ...
- Gym100947E || codeforces 559c 组合数取模
E - Qwerty78 Trip Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u S ...
- CodeForces 450B (矩阵快速幂模板题+负数取模)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51919 题目大意:斐波那契数列推导.给定前f1,f2,推出指定第N ...
- Codeforces Round #260 (Div. 2) A B C 水 找规律(大数对小数取模) dp
A. Laptops time limit per test 1 second memory limit per test 256 megabytes input standard input out ...
- CodeForces Round #191 (327C) - Magic Five 等比数列求和的快速幂取模
很久以前做过此类问题..就因为太久了..这题想了很久想不出..卡在推出等比的求和公式,有除法运算,无法快速幂取模... 看到了 http://blog.csdn.net/yangshuolll/art ...
- Codeforces 57C (1-n递增方案数,组合数取模,lucas)
这个题相当于求从1-n的递增方案数,为C(2*n-1,n); 取模要用lucas定理,附上代码: #include<bits/stdc++.h> using namespace std; ...
随机推荐
- eclipse下svn的分支与合并指南 - 更新版
http://wenku.baidu.com/link?url=ul5vzBHZpHgzENp46RQwTYrkCUYLeVg9TuhmPM_qisR1BGzp6Qca7onhS-SOzwDYuYdA ...
- 前端开发中的 meta 整理
meta是html语言head区的一个辅助性标签.也许你认为这些代码可有可无.其实如果你能够用好meta标签,会给你带来意想不到的效果,meta标签的作用有:搜索引擎优化(SEO),定义页面使用语言, ...
- 牛客网练习赛25 C 再编号
链接:https://www.nowcoder.com/acm/contest/158/C来源:牛客网 定义对 a 的再编号为 a' ,满足 . 现在有 m 次询问,每次给定 x,t ,表示询问经过 ...
- 串的基本操作(KMP算法实现)
#include <iostream> #include <math.h> using namespace std; void StrAssign(char *T) { cha ...
- MySQL本地登录及数据库导入导出
注意:本地MySQL服务要开启 更新整个数据库 1.将正式服务器上的数据库做备份 登录到正式服务器,执行如下命令:(注意空格) mysqldump -uroot –p密码 数据库名 -P 接口 --d ...
- centos7 rsync+inotify软件实现集群服务的数据备份(一)
一.rsync软件的说明: 1.1 什么是rsync rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.它使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达 ...
- 剑指Offer(书):二维数组中的查找
题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...
- 有上下界的网络流 loj115 loj116 loj 117
参考文章 无源汇有上下界的可行流 有源汇有上下界的最大流 有源汇有上下界的最小流 无源汇有上下界可行流 以 loj115 为例. 剥离出必要边与自由边. #include <iostream&g ...
- Jmeter接口测试实战-Cookies
场景: 接口测试时常都需要登录,请求方式(post), 登录常用的方法有通过获取token, 获取session, 获取cookie, 等等. 这几种都有一个共同的特点, 有效期(expires). ...
- python蛋疼的编码decode、encode、unicode、str、byte的问题都在这了
相信很多人和我一样,被python蛋疼的编码问题纠缠不清,比如下面的 私以为出现这种错误的原因还是对一些基本的编解码概念不够熟悉,下面就说说我的理解: 首先python刚出来的时候unicode还没有 ...