《挑战程序设计竞赛》2.6 数学问题-辗转相除法 AOJ0005 POJ2429 1930(1)
AOJ0005
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0005
题意
给定两个数,求其最大公约数GCD以及最小公倍数LCM。
思路
求最大公约数一般用辗转相除法,然后就得到了最小公倍数。
更详细的分析参见我的博客文章:
数论——最大公约数和最小公倍数算法
代码
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
unsigned GCD(unsigned a, unsigned b)
{
if (!b) return a;
return GCD(b, a%b);
}
unsigned LCM(unsigned a, unsigned b)
{
return a / GCD(b, a-b) * b;
}
int main(void)
{
unsigned a, b;
while (scanf("%u %u", &a, &b) != EOF) {
if (a < b) swap(a, b);
printf("%u %u\n", GCD(a, b), LCM(a, b));
}
return 0;
}
POJ2429
POJ1930
http://poj.org/problem?id=1930
题意
将一个无限循环小数转化成分母最小的精确分数值。
注意:循环的部分不一定是最后一位,有可能从小数点后面全是循环部分。
思路
将分数分成循环的部分和非循环的部分:
设分数为0.i1 i2 i3 i4 .. ik j1 j2 j3 .. jc,其中i1 ~ ik 为非循环的部分,j1 ~ jc为循环部分。
非循环的部分可以拆成 b / a 其中 b = ( i1…ik) a = 10 ^ (k);
循环的部分可以拆成 bb / aa 其中 bb = (j1 .. jc) aa = 10 ^ (k + c) - 10 ^ ( k);
则所求分数为 b / a + bb / aa,通分得 (b * aa + bb * a) / a * aa,约分得答案(用最大公约数求)。
另外,据说数据会有全是0的坑爹数据,但我没有被坑到。
代码
Source Code
Problem: 1930 User: liangrx06
Memory: 172K Time: 16MS
Language: C++ Result: Accepted
Source Code
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <string>
#include <algorithm>
using namespace std;
int gcd(int a, int b)
{
if (b == 0)
return a;
return gcd(b, a%b);
}
int exp10(int x)
{
int res = 1;
while (x--)
res *= 10;
return res;
}
int main(void)
{
int i, j, a, b, a10, b10, g, len;
int m, n;
string s, sa, sb;
while(cin >> s)
{
if(s == "0")
break;
len = s.size();
for(i = 1; i <= len-5; i++) {
sa = s.substr(len-3-i, i);
a = atoi(sa.c_str());
a10 = exp10(i);
j = len-5-i;
sb = s.substr(2, j);
b = atoi(sb.c_str());
b10 = exp10(j);
int tn = (a10-1)*b10;
int tm = b*(a10-1) + a;
g = gcd(tn, tm);
tn /= g;
tm /= g;
if (i == 1 || i > 1 && tn < n) {
n = tn;
m = tm;
}
}
printf("%d/%d\n", m, n);
}
return 0;
}
《挑战程序设计竞赛》2.6 数学问题-辗转相除法 AOJ0005 POJ2429 1930(1)的更多相关文章
- Aizu 2249Road Construction 单源最短路变形《挑战程序设计竞赛》模板题
King Mercer is the king of ACM kingdom. There are one capital and some cities in his kingdom. Amazin ...
- 《挑战程序设计竞赛》2.3 动态规划-优化递推 POJ1742 3046 3181
POJ1742 http://poj.org/problem?id=1742 题意 有n种面额的硬币,面额个数分别为Ai.Ci,求最多能搭配出几种不超过m的金额? 思路 据说这是传说中的男人8题呢,对 ...
- 挑战程序设计竞赛》P345 观看计划
<挑战程序设计竞赛>P345 观看计划 题意:一周一共有M个单位的时间.一共有N部动画在每周si时 ...
- POJ 2386 Lake Counting 题解《挑战程序设计竞赛》
地址 http://poj.org/problem?id=2386 <挑战程序设计竞赛>习题 题目描述Description Due to recent rains, water has ...
- poj 3253 Fence Repair 贪心 最小堆 题解《挑战程序设计竞赛》
地址 http://poj.org/problem?id=3253 题解 本题是<挑战程序设计>一书的例题 根据树中描述 所有切割的代价 可以形成一颗二叉树 而最后的代价总和是与子节点和深 ...
- 《挑战程序设计竞赛》2.6 数学问题-快速幂运算 POJ1995
POJ3641 此题应归类为素数. POJ1995 http://poj.org/problem?id=1995 题意 求(A1^B1+A2^B2+ - +AH^BH)mod M. 思路 标准快速幂运 ...
- 《挑战程序设计竞赛》2.6 数学问题-素数 AOJ0009 POJ3126 3421 3292 3641
AOJ0009 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0009 题意 求不大于n的素数个数. 思路 素数筛法可解,筛法过程中 ...
- 《挑战程序设计竞赛》 4.1.1 矩阵 P286
想写几篇挑战的感悟,也有助于自己理解这本书.但这上面大多贴的是书上的代码,主要是为了用的时候后直接复制就好了,这样就很方便了,就相当于黑盒模板了. 1.线性方程组 /** \brief 高斯消元法 * ...
- poj1182食物链_并查集_挑战程序设计竞赛例题
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 65534 Accepted: 19321 Description ...
随机推荐
- [elk]elastalert邮箱告警
本次要完成以下任务: 1.源码包安装elasticalert 2.配置邮箱报警 原则: 先很快的通过alert报警发一份邮件,其次了解alert配置文件各个选项 源码安装elasticalert 参考 ...
- Visual Studio/Eclipse调用 JBoss5中的WebService
1. HelloWebService.java package com.xx.webservices; import javax.jws.WebMethod; import javax.jws.Web ...
- django中使用POST方法 使用ajax后出现“CSRF token missing or incorrect”
这个是因为在django的ajax中默认添加了token,因此需要在cookie中增加token头信息. 首先使用JavaScript函数获取token: function getCookie(nam ...
- sql注入的防御和挖掘
首先我们可以在PHP.ini当中将display_errror关闭,以防止报错型的注入. 1.字符型防护 is_number 正则来判断是否是数字. ctype_digit() intval() st ...
- SessionListener失败,退出
配置如下: web.xml: <listener> <listener-class>cn.edu.hbcf.common.listener.SessionListener< ...
- 微信小程序1 - 扩展app.js
常规的开发过程中, 每个Page的逻辑中,要使用 util.js WapRequest.js, 需要在每个页面中书写 require('/utils/WapRequest'); 略繁琐 在app. ...
- tuning 03 Sizing the Share pool
share pool : (组成) library cache: stores shared sql and pl/sql code (包含 statement text, parsed code, ...
- jquery--递增--年份的选择
<select id="select_year"></select> <script> $(document).ready(function() ...
- 【BZOJ】2015: [Usaco2010 Feb]Chocolate Giving(spfa)
http://www.lydsy.com/JudgeOnline/problem.php?id=2015 这种水题真没啥好说的.. #include <cstdio> #include & ...
- Cross compile perl
Alex Suykov had do some work for this purpose, and my compile script is based on her patch. Steps St ...