codeforces 404 B Marathon【fmod对浮点数取余】

题意:给出一个边长为a的正方形,给出d,给出n,输出走得距离为i个d的时候的坐标

学习的这一篇

http://blog.csdn.net/synapse7/article/details/21595639

用fmod可以对浮点数取余

然后当d很大的时候,做除法容易产生较大的误差,所以先用fmod(d,4*a)处理一下(事实证明不处理,会wa在11个数据)

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include <cmath>
 5 #include<stack>
 6 #include<vector>
 7 #include<map>
 8 #include<set>
 9 #include<queue>
10 #include<algorithm>
11 using namespace std;
12
13 #define foreach(i,c) for (__typeof(c.begin()) i = c.begin(); i != c.end(); ++i)
14
15 typedef long long LL;
16 const int INF = (1<<30)-1;
17 const int mod=1000000007;
18 const int maxn=100005;
19
20 double a,d;
21 int n;
22
23 void f(double len){
24     int ans=(int)(len/a)%4;
25     len=fmod(len,a);
26     if(ans==0) printf("%f 0\n",len);
27     if(ans==1) printf("%f %f\n",a,len);
28     if(ans==2) printf("%f %f\n",a-len,a);
29     if(ans==3) printf("0 %f\n",a-len);
30 }
31
32
33 int main(){
34     cin>>a>>d>>n;
35     d = fmod(d, 4 * a);
36     for(int i=1;i<=n;i++) f(i*d);
37 }

时间: 2024-12-21 18:14:44

codeforces 404 B Marathon【fmod对浮点数取余】的相关文章

PHP大数(浮点数)取余

一般我们进行取余运算第一个想到的就是用百分号%,但当除数是个很大的数值,超出了int范围时,这样取余就不准确了. php大数(浮点数)取余函数 /** * php大数取余 * * @param int or float $bn 除数 * @param int $sn 被除数 * @return int 余数 */ //大数(浮点数)取余方法 function Kmod($bn, $sn) { return intval(fmod(floatval($bn), $sn)); } 测试代码: //大

golang 浮点数 取精度的效率对比

需求 浮点数取2位精度输出 实现 代码 package main import ( "time" "log" "strconv" "fmt" ) func main() { threadCount := 100000 fa := 3.233667 time1 := TestFn(threadCount,fa,func(fa float64) string{ return strconv.FormatFloat(fa,'f',2

Codeforces Round #534 (Div. 2) D. Game with modulo(取余性质+二分)

D. Game with modulo 题目链接:https://codeforces.com/contest/1104/problem/D 题意: 这题是一个交互题,首先一开始会有一个数a,你最终的目的是要将它猜出来. 每次询问会输出"? x y",然后有: "x" (without quotes), if (x % a)≥(y % a). "y" (without quotes), if (x % a)<(y % a). 最多给你60次

除法和取余的运算时间

上次排队那题,让我发现减少取余的次数可以减少很多时间. 然后查到一篇文章 高频率调用的函数一定要保证最优化,慎用除法和余数 原po显示404,所以只有别人转载的. 就是说:除法.取余的指令 CPU周期 可以达到加减法的80倍(周期越多越耗时),因此高频率使用的函数里,以及循环次数很大的循环里,可以通过减少除法次数和取余次数来优化.里面介绍了一些方法,比如用乘法.减法代替. 然后又看到另一篇文章 取模.乘法和除法运算在CPU和GPU上的效率 意思是好像取模运算并没有想象中的那么慢 对于CPU,最好

C++取余

自己整理的一点跟取余有关的东西,希望对大家有用. 取余方法1: 整型取余的运算符  % , 使用方法 x%y. x和y必须都是整型,但是不一定是正的. %运算符叫做求余(remainder)或者求模(modulus),用户计算x除以y的余数.该操作符的操作数只能是:bool.char.short.int和long,以及对应的unsigned类型. 操作结果解析: (1)如果两个操作数都是正数(或0),那么操作结果为整数或者0(这样的记过同样适用于处于运算符 '/') (2)如果两个操作数都是负数

898B. Proper Nutrition#买啤酒问题(枚举&amp;取余)

题目出处:http://codeforces.com/problemset/problem/898/B 题目大意:为一个整数能否由另外两个整数个整数合成 #include<iostream> using namespace std; int main(){ int n,a,b; cin>>n>>a>>b; if(n%2==1 && a%2==0 && b%2==0 ){cout<<"NO"<

加/减/乘/除 下的取余

x(负数) mod y(正数) = z 其中x<z<=0 , 且(z-x) mod y=0. 求法:z=x+abs(x)/y*y (这里的除法结果向下取整) 所以当求一个数经过各种计算后的取余,只需 ans=(ans+x*y)%yu ans=(ans-x*y)%yu ans=ans*x%yu 除法:用线性逆元 最后 ans=(ans+yu)%yu (要是之前有减法运算)

salesforce 零基础学习(四十三)运算取余

工作中遇到一个简单的小问题,判断两个数是否整除,如果不整除,获取相关的余数. 习惯java的我毫不犹豫的写下了代码 public Boolean isDivisibility(Integer dividend,Integer divider) { return dividend % divider == 0; } 提交代码发现竟然提交不上?? 后来查看API发现apex中没有直接的%取余运算,所以如果想要取余以及判断是否整除需要其他方式,代码如下: public without sharing

汇编总结:无符号除法,有符号除法,取余,无符号乘法,有符号乘法

本文分为3个模块. 示例---该指令的示例 解释---为指令不好理解的地方 练习---为了更熟悉该指令 1.1 有符号除法指令及取余example: 在c语言里要完成 8 / 2的汇编指令如下: 在c语言里要完成 8 % 2的汇编指令如下: 4个字节的除法及取余运算示例如下: .section .text .global _start _start:     movl $8, %eax   #被除数是%edx:%eax 是这两个寄存器拼起来的%eax存放低位%edx存储高位     movl %