参考: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
这个函数还可以取得某个数的小数点后的部分。如:
fload f = 1.234;
fmod(f,(int)f)即可得到小数点后的部分
 
 

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的更多相关文章

  1. PHP求余函数fmod()

    定义和用法 fmod() 函数返回除法的浮点数余数. 语法 fmod(x,y) 参数 描述 x 必需.一个数. y 必需.一个数. 说明 返回被除数(x)除以除数(y)所得的浮点数余数.余数(r)的定 ...

  2. C语言fmod()函数:对浮点数取模(求余)

    头文件:#include <math.h> fmod() 用来对浮点数进行取模(求余),其原型为:    double fmod (double x); 设返回值为 ret,那么 x = ...

  3. 基于cocos2d-x的Android游戏中使用fmod音频引擎

    cocos2d-x的音频引擎是cocosDenshion, 它的Android版比较弱, 只能播放一个背景音乐和些许音效, 如果要实现稍微复杂一点的音频播放, 比如同时播放几个音轨就不能了. 这一点远 ...

  4. [MetaHook] Quake FMOD function

    QFMOD.h #ifndef QFMOD_H #define QFMOD_H #include "fmod.h" extern FMOD_RESULT (F_API *qFMOD ...

  5. FMOD在Android玩音响系统的抖动问题

    1. 基本介绍 在Android升级系统Android4.4之后,发现FMOD在Android音会出现抖动.导致声音不正常.边赫赫有名的"极品飞车"都有问题. 经查验,是FMOD的 ...

  6. fmod函数和modf函数

    最近从博客上看到了一个fmod函数,结果又蹦出来一个modf函数 fmod函数: 头文件:#include<math.h> C库函数... fmod()用来对浮点数进行取模(求余),原型为 ...

  7. fmod()函数 (对浮点数取模)

    头文件:#include <math.h> fmod() 用来对浮点数进行取模(求余),其原型为:    double fmod (double x); 设返回值为 ret,那么 x = ...

  8. Fmod使用总结

    1.查询相关文档的地址 http://www.fmod.org/forum/viewtopic.php?f=7&t=15762

  9. FMOD变声如何捕获并存储处理音效之后的数据

    类似AVAudioEngine的功能,一个Engine可以将N个connect连接(串联和并联)在一起,这样来实现多个输入源,多层处理效果的混合输出.实现这个所需功能也是通过这样的方案来实现的.也就是 ...

随机推荐

  1. UILabel 的一个蛋疼问题

    一.问题描述 在iOS8以下版本,numberOfLines设置为0,编译警告Automatic Preferred Max Layout Width before iOS8.0,同时不能换行. 二. ...

  2. 关于一些对map和整行读取文件操作

    public static void main(String[] args) { Map<String, String> map = new HashMap<String, Stri ...

  3. $.extend()、$.fn和$.fn.extend()

      理解$.extend().$.fn和$.fn.extend()   原文链接:http://caibaojian.com/jquery-extend-and-jquery-fn-extend.ht ...

  4. JPA快速入门(自用)

    该案例为JPA的实体映射案例,将该项目解压导入到myeclipse中即可使用,然后直接使用hibernate即可! 文件地址:files.cnblogs.com/mrwangblog/JPA-Hibe ...

  5. IBM Z上邮件服务器的配置相关内容

    https://www.ibm.com/support/knowledgecenter/SSLTBW_1.13.0/com.ibm.zos.r13.halz002/sen.htm#sen 每次搜太费劲 ...

  6. 网络请求 __ NSURLSession

    首先配置into.plist文件 1. 添加 App Transport Security Settings , Type栏自动变为Dictionary 2. 点击左边箭头,使之向下,点击右边加号,添 ...

  7. C# 委托&事件

    之前关于事件这块理解一直不是很好,正好有空复习,整理记录一下 委托:可以将与自身形式相同(返回参数相同:传入参数相同)的方法当成参数进行传递. using UnityEngine; using Sys ...

  8. 移动端webapp自适应实践(css雪碧图制作小工具实践)图文并茂

    为什么要写这个 以前写过关于webapp自适应屏幕的文章(链接),不过写的大多数群众看不懂,所以来个图文并茂的版本.虽然只是一个简单的页面,不过在做的过程中也遇到了一些问题,也算是好事吧! 该示例gi ...

  9. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-介绍

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  10. UWP学习记录11-设计和UI

    UWP学习记录11-设计和UI 1.输入和设备 通用 Windows 平台 (UWP) 中的用户交互组合了输入和输出源(例如鼠标.键盘.笔.触摸.触摸板.语音.Cortana.控制器.手势.注视等)以 ...