kgcd ,fmod,fgcd
参考:NENU CS ACM模板made by tiankonguse 2.13 GCD
快速gcd:
位操作没学,真心不懂二进制,还是得学啊
code:
- int kgcd(){
- if(!a || !b)
- return a?a:b;
- if(!(a&) && !(b&))
- return kgcd(a>>,b>>)<<;
- if(!(b&))
- return kgcd(a,b>>);
- if(!(a&))
- return kgcd(a>>,b);
- return kgcd(b,a%b);
- }
在说fgcd之前先说一下fmod函数吧
fmod:
- 原型:extern float fmod(float x, float y);
- 头文件:#include <math.h>
- 功能:计算x/y的余数
- 说明:返回x-n*y,使用codeblocks编译符号同x。n=[x/y](向离开零的方向取整)
- 举例:
- int main(){
- double x,y;
- x=24.238;
- y=;
- printf("%lf\n",fmod(x,y));
- }
- 运行结果是 4.238
fgcd:(实数的gcd)
模板:
- #define eps 1e-8
- double fgcd(double a,double b){
- if(b > -eps && b < eps){
- return a;
- }
- else{
- return fgcd(b,fmod(a,b));
- }
举例:
Apr 30,2014 codeforces
C. Ancient Berland Circus
题目大意:给出3个点,求最小面积的正多边形,使得这3个点为正多边形的顶点。
算法分析:
根据正多边形的性质,正多边形的每个顶点都在其外接圆上。
已知3个点,可以根据海伦公式求出三角形的面积S。然后根据正弦定理求出外接圆的半径R=abc/(4S),根据余弦定理求出三个圆心角。
求出三个圆心角的最大公约数A,则正多边形由2*pi/A个小三角形组成。
根据正弦定理求出每个小三角形的面积S0,则答案即为S0*2*pi/A。
Code:
- #include <cstdio>
- #include <cmath>
- using namespace std;
- const double pi=acos(-),eps=1e-;
- double x[],y[],a,b,c,A,B,C,p,S,R,alpha,S0,n;
- double fgcd(double a,double b){
- if (fabs(b)<eps) return a;
- return fgcd(b,fmod(a,b));
- }
- int main(){
- for (int i=;i<;++i) scanf("%lf%lf",&x[i],&y[i]);
- a=sqrt((x[]-x[])*(x[]-x[])+(y[]-y[])*(y[]-y[]));
- b=sqrt((x[]-x[])*(x[]-x[])+(y[]-y[])*(y[]-y[]));
- c=sqrt((x[]-x[])*(x[]-x[])+(y[]-y[])*(y[]-y[]));
- A=*acos((b*b+c*c-a*a)//b/c);
- B=*acos((a*a+c*c-b*b)//a/c);
- C=*pi-A-B;
- p=(a+b+c)/;
- S=sqrt(p*(p-a)*(p-b)*(p-c));
- R=a*b*c//S;
- alpha=fgcd(fgcd(A,B),C);
- n=*pi/alpha;
- S0=R*R*sin(alpha)/;
- printf("%0.7lf\n",n*S0);
- return ;
- }
关于GCD的一些结论
1.有两个数p,q,gcd(p,q) = 1,则最大无法表示成px+qy(x >= 0 ,y >= 0)的数是pq-q-p.
2.区间内与n的gcd不小于m的数
输入m,n,求1-n之间中gcd(x,n) >= m 的x的个数。
找出N的所有大于等于M的因子(x1,x2,x3......xi),然后设k = N/xi.
下面只需找出小于k且与k互质的数。
因为:设y小于k且与k互质,那么gcd(y*xi,k*xi) = xi,(xi为k的因子,且xi大于等于M)。
kgcd ,fmod,fgcd的更多相关文章
- PHP求余函数fmod()
定义和用法 fmod() 函数返回除法的浮点数余数. 语法 fmod(x,y) 参数 描述 x 必需.一个数. y 必需.一个数. 说明 返回被除数(x)除以除数(y)所得的浮点数余数.余数(r)的定 ...
- C语言fmod()函数:对浮点数取模(求余)
头文件:#include <math.h> fmod() 用来对浮点数进行取模(求余),其原型为: double fmod (double x); 设返回值为 ret,那么 x = ...
- 基于cocos2d-x的Android游戏中使用fmod音频引擎
cocos2d-x的音频引擎是cocosDenshion, 它的Android版比较弱, 只能播放一个背景音乐和些许音效, 如果要实现稍微复杂一点的音频播放, 比如同时播放几个音轨就不能了. 这一点远 ...
- [MetaHook] Quake FMOD function
QFMOD.h #ifndef QFMOD_H #define QFMOD_H #include "fmod.h" extern FMOD_RESULT (F_API *qFMOD ...
- FMOD在Android玩音响系统的抖动问题
1. 基本介绍 在Android升级系统Android4.4之后,发现FMOD在Android音会出现抖动.导致声音不正常.边赫赫有名的"极品飞车"都有问题. 经查验,是FMOD的 ...
- fmod函数和modf函数
最近从博客上看到了一个fmod函数,结果又蹦出来一个modf函数 fmod函数: 头文件:#include<math.h> C库函数... fmod()用来对浮点数进行取模(求余),原型为 ...
- fmod()函数 (对浮点数取模)
头文件:#include <math.h> fmod() 用来对浮点数进行取模(求余),其原型为: double fmod (double x); 设返回值为 ret,那么 x = ...
- Fmod使用总结
1.查询相关文档的地址 http://www.fmod.org/forum/viewtopic.php?f=7&t=15762
- FMOD变声如何捕获并存储处理音效之后的数据
类似AVAudioEngine的功能,一个Engine可以将N个connect连接(串联和并联)在一起,这样来实现多个输入源,多层处理效果的混合输出.实现这个所需功能也是通过这样的方案来实现的.也就是 ...
随机推荐
- phpstudy 80端口被占用,修改端口
搭建mantis,总会出现80端口被占用的情况.看到别的步骤是:1.cmd 运行netstat -ano查看80端口被什么占用,然后在任务管理器找到对应的结束进程.通常情况下是被System占用,右击 ...
- selenium 下载百度音乐并验证
package baidu; import java.io.File; import java.io.IOException; import java.util.List; import org.ap ...
- appium for hybrid app 处理webview
之前研究了一段时间的appium for native app 相应的总结如下: appium测试环境搭建 :ht ...
- web.config数据库连接字符串
我们在做VB数据库经典实例这本书上的五个小例子和做学生信息管理系统时,都需要通过Vb链接数据库,在众多的链接方式中connectionstring字符串应该是较为简单的一种方式,下面我来详细介绍它的一 ...
- Qt在ui中使用代码添加新的控件
QLabel* label = new QLabel(ui->centralWidget);
- EXCEL 对比数据是否重复
1.同一列 后一行对比前面所有行 查找是否重复 =IF(COUNTIF(B$2:B2,B2)>1,"重复","") 2.两行两列(多行多列) 两行两列 = ...
- Ext.js细节:在MVC中处理Widget Column,GetCmp和ComponentQuery, Id和ItemId
针对EXT.JS版本的演进,要不断的学习新的最佳实践方法. 比如,在定义组件时,尽管用itemid,而不是id. 在搜索组件时,尽量用ComponentQuery,而不是getCmp. 在MVC中处理 ...
- 剑指Offer-【面试题04:替换空格】
package com.cxz.question4; /* * 请实现一个函数,把字符串中的每个空格替换成"%20",例如"We are happy.",则输出 ...
- 用WinForm写的员工考勤项目!!!!!!
先说几句,作为一个还在学习的程序员,掌握的知识有限:但我利用自身所学,给一些像我一样还在学习的码农提供我的绵薄之力! 写的不好,但是尽力了,希望大牛指点.多多吐槽!!! 好了开始说项目需求: 实现新增 ...
- 前端弹出层框架layer
http://www.layui.com/doc/modules/layer.html#layer.confirm