ZOJ Problem Set - 1337 Pi 最大公约数
这道题目的关键在于怎么求两个整数的最大公约数,这里正好复习一下以前的知识,如下:
1.设整数a和b
2.如果a和b都为0,则二者的最大公约数不存在
3.如果a或b等于0,则二者的最大公约数为非0的一个
4.如果b不为0,则使得a=a,b=a%b,转到2重复执行
实现的递归代码如下:
int gcb(int a,int b)
{
if(b==)
return a;
else
return gcb(b,a%b);
}
注:这个算法的证明这里简单说明下:
1.设g为a和b的公约数
2.则存在m和k使得 a=g*m b=g*k
3.同时利用b可表示a a=b*l+r (其中r为余数)
4.合并2、3中的两个式子得出 r=g*(m-l*k) (g!=0)
5.可看出a和b的公约数同时也是b和a%b(取余)的公约数
6.利用反证法我们可以得出结论:如果g是a和b的最大公约数则它也是b和a%b的最大公约数
这样就有了如上算法
这道题目的核心就是这些同时注意运用一些常识:
1.两个偶数不可能互质
2.两个差为1的整数一定互质
见ac代码:
#include <stdio.h>
#include <math.h> int c(int n)
{
return n*(n-)/;
} int gcb(int a,int b)
{
if(b==)
return a;
else
return gcb(b,a%b);
} int myabs(int a)
{
return a<?-a:a;
} int main()
{
int n,num[];
while(scanf("%d",&n)!=EOF&&n)
{
int i,j;
for(i=;i<n;i++)
scanf("%d",&num[i]);
double pairs=double(c(n)); double ncf=;
for(i=;i<n;i++)
{
for(j=i+;j<n;j++)
{
if(num[i]%==&&num[j]%==)
continue;
else if(myabs(num[i]-num[j])==)
{
ncf++;
continue;
}
else
{
if(gcb(num[i],num[j])==)
ncf++;
}
}
} if(ncf==)
printf("No estimate for this data set.\n");
else
printf("%.6lf\n",sqrt(/ncf*pairs));
} return ;
}
ZOJ Problem Set - 1337 Pi 最大公约数的更多相关文章
- ZOJ Problem Set - 1394 Polar Explorer
这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...
- ZOJ Problem Set - 1090——The Circumference of the Circle
ZOJ Problem Set - 1090 The Circumference of the Circle Time Limit: 2 Seconds Memory Limit: 65 ...
- ZOJ Problem Set - 1025解题报告
ZOJ Problem Set - 1025 题目分类:基础题 原题地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=10 ...
- ZOJ Problem Set - 3829Known Notation(贪心)
ZOJ Problem Set - 3829Known Notation(贪心) 题目链接 题目大意:给你一个后缀表达式(仅仅有数字和符号),可是这个后缀表达式的空格不幸丢失,如今给你一个这种后缀表达 ...
- ZOJ Problem Set - 2563 Long Dominoes 【如压力dp】
称号:ZOJ Problem Set - 2563 Long Dominoes 题意:给出1*3的小矩形.求覆盖m*n的矩阵的最多的不同的方法数? 分析:有一道题目是1 * 2的.比較火.链接:这里 ...
- ZOJ Problem Set - 3593 拓展欧几里得 数学
ZOJ Problem Set - 3593 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3593 One Person ...
- ZOJ Problem Set - 2297 Survival 【状压dp】
题目:ZOJ Problem Set - 2297 Survival 题意:给出一些怪,有两个值,打他花费的血和能够添加的血,然后有一个boss,必须把小怪全部都打死之后才干打boss,血量小于0会死 ...
- ZOJ Problem Set - 3820 Building Fire Stations 【树的直径 + 操作 】
题目:problemId=5374" target="_blank">ZOJ Problem Set - 3820 Building Fire Stations 题 ...
- ZOJ Problem Set - 3229 Shoot the Bullet 【有上下界网络流+流量输出】
题目:problemId=3442" target="_blank">ZOJ Problem Set - 3229 Shoot the Bullet 分类:有源有汇 ...
随机推荐
- MySQL Can't connect to MySQL server on 'localhost' (10061)
run > services.msc > rightclick MySQL > properties >start 搞定
- [Window Title] (没有登录) [Content] ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务 [OK]
重启Oracle服务
- SQL Server数据库镜像的页面自动修复原理
SQL Server数据库镜像的页面自动修复原理 主库页面损坏 镜像库页面损坏 LSN用来保证事务的时序 LSN保存在每个数据页面的页头 在同一台机器,内存中的数据页和磁盘中的数据页保持同步依靠的是数 ...
- Visual Studio 2013 Web开发
cnbeta新闻:微软正式发布Visual Studio 2013 RTM版,微软还发布了Visual Studio 2013的最终版本..NET 4.5.1以及Team Foundation Ser ...
- 动态Web API层
返回总目录 本篇目录 构建动态Web API控制器 ForAll 方法 重写ForAll 方法 Http动词 动态Javascript代理 Ajax参数 单一服务脚本 Angular支持 Durand ...
- iconfont的蜕化操作
很多国外的网站,访问的时候可以看到,页面先是大面积白一下,然后恢复正常.原因是网页上用到了 webfont,这些页面很多情况都是直接引用 google 的 webfont 地址,中华大局域网下,由于网 ...
- 探索c#之一致性Hash详解
阅读目录: 使用场景 算法原理 虚拟节点 代码示例 使用场景 以Redis为例,当系统需要缓存的内容超过单机内存大小时,例如要缓存100G数据,单机内存仅有16G时.这时候就需要考虑进行缓存数据分片, ...
- Azure PowerShell (11) 使用自定义虚拟机镜像模板,创建Azure虚拟机并绑定公网IP(VIP)和内网IP(DIP)
<Windows Azure Platform 系列文章目录> 前提要求: 1.假设笔者捕获一个Azure虚拟机模板,命名为leistorage 关于Azure虚拟机模板,请参考下图: 2 ...
- C语言 · 寻找数组中的最大值
问题描述 对于给定整数数组a[],寻找其中最大值,并返回下标. 输入格式 整数数组a[],数组元素个数小于1等于100.输出数据分作两行:第一行只有一个数,表示数组元素个数:第二行为数组的各个元素. ...
- 《Entity Framework 6 Recipes》中文翻译系列 (28) ------ 第五章 加载实体和导航属性之测试实体是否加载与显式加载关联实体
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-11 测试实体引用或实体集合是否加载 问题 你想测试关联实体或实体集合是否已经 ...