UVA 10555 - Dead Fraction(数论+无限循环小数)
UVA 10555 - Dead Fraction
题意:给定一个循环小数,不确定循环节,求出该小数用分数表示,而且分母最小的情况
思路:推个小公式
一个小数0.aaaaabbb... 表示为n/m形式,而且a为整数部分有c位, b为小数部分有d位
那么aaaaa.bbb...和aaaaabbb....分别能够表示为10c∗(n/m)和10c+d∗(n/m)
两式相减得:aaaaabbb−aaaaa=(10c+d−10c)(n/m)
那么设n1 = aaaaabbb ,n2 = aaaaa, m1 =
10c+d,
m2 = 10c.
因此n/m就能够表示为(n1 - n2) / (m1 - m2)
对于这题。那就是去枚举循环节位置,分别算出n1, n2, m1, m2就能够表示出分数。而且记录下分母最小值的情况
代码:
#include <stdio.h>
#include <string.h> char str[105];
const long long INF = 0x3f3f3f3f3f3f3f; long long gcd(long long a, long long b) {
if (!b) return a;
return gcd(b, a % b);
} void solve() {
int len = strlen(str) - 5;
for (int i = 0; i < len; i++)
str[i] = str[i + 2];
long long n1 = 0, m1 = 1;
long long anszi, ansmu = INF;
for (int i = 0; i < len; i++) {
n1 = n1 * 10 + str[i] - '0';
m1 *= 10;
}
for (int i = 0; i < len; i++) {
int n2 = 0, m2 = 1;
for (int j = 0; j < i; j++) {
n2 = n2 * 10 + str[j] - '0';
m2 *= 10;
}
long long zi = n1 - n2, mu = m1 - m2;
long long k = gcd(zi, mu);
zi /= k; mu /= k;
if (mu < ansmu) {
anszi = zi;
ansmu = mu;
}
}
printf("%lld/%lld\n", anszi, ansmu);
} int main() {
while (~scanf("%s", str) && strcmp(str, "0") != 0) {
solve();
}
return 0;
}
UVA 10555 - Dead Fraction(数论+无限循环小数)的更多相关文章
- uva 10555 - Dead Fraction)(数论)
option=com_onlinejudge&Itemid=8&category=516&page=show_problem&problem=1496" st ...
- poj 1930 Dead Fraction(循环小数化分数)
Dead Fraction Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 3478 Accepted: 1162 Des ...
- POJ 1930 Dead Fraction
POJ 1930 Dead Rraction 此题是一个将无限循环小数转化为分数的题目 对于一个数 x=0.abcdefdef.... 假设其不循环部分的长度为m(如abc的长度为m),循环节的长度为 ...
- Mathematics:Dead Fraction(POJ 1930)
消失了的分式 题目大意:某个人在赶论文,需要把里面有些写成小数的数字化为分式,这些小数是无限循环小数(有理数),要你找对应的分母最小的那个分式(也就是从哪里开始循环并不知道). 一开始我也是蒙了,这尼 ...
- 无限循环小数POJ1930
题意:给定一个无限循环小数,求其分数形势,要求分母最小 分析:看了别人的题解才做出来的,将无限循环小数转化成分数,分为纯循环和混循环两种形式. (1)对于纯循环:用9做分母,有多少个循环数就几个9,比 ...
- Dead Fraction [POJ1930]
题意: 很有意思的一道题,,将一个无限循环小数转化成分母最小的精确分数值....,循环的部分不一定是最后一位. Sample Input 0.2... 0.20... 0.474612399... 0 ...
- POJ 1930 Dead Fraction (循环小数-GCD)
题意:给你一个循环小数,化成分数,要求分数的分母最小. 思路:暴力搜一遍循环节 把循环小数化分数步骤: 纯循环小数化分数 纯循环小数的小数部分可以化成分数,这个分数的分子是一个循环节表示的数,分母各位 ...
- UVA 10627 - Infinite Race(数论)
UVA 10627 - Infinite Race option=com_onlinejudge&Itemid=8&page=show_problem&category=516 ...
- uva 10560 - Minimum Weight(数论)
题目连接:uva 10560 - Minimum Weight 题目大意:给出n,问说至少须要多少个不同重量的砝码才干称量1~n德重量,给出所选的砝码重量,而且给出k,表示有k个重量须要用上述所选的砝 ...
随机推荐
- Pro ASP.NET Core MVC 第6版 第二章(前半章)
目录 第二章 第一个MVC 应用程序 学习一个软件开发框架的最好方法是跳进他的内部并使用它.在本章,你将用ASP.NET Core MVC创建一个简单的数据登录应用.我将它一步一步地展示,以便你能看清 ...
- java生成excel
package test.poi; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; ...
- golang 自定义time.Time json输出格式
工作中使用golang时,遇到了一个问题.声明的struct含time.Time类型.使用json格式化struct时,time.Time被格式化成”2006-01-02T15:04:05.99999 ...
- 如何让一个div里面的div垂直居中?
如何让一个div里面的div垂直居中? 如何让上面灰色有文字那个div和背景图标垂直居中,不管屏幕大小有好大,始终在垂直方向上的中间.上面有整个布局和样式表,谢谢高手指点 CSS3时代当然要用CSS3 ...
- CAD得到所有组名(网页版)
主要用到函数说明: _DMxDrawX::GetAllGroupName 得到所有组名. js代码实现如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...
- Redis系列(六)--为什么这么快?
Redis作为一个基于key-value的NoSQL数据库,最显著的特点存取速度非常快,官方说可以达到10W OPS,但是Redis为何这么快? 1.开发语言 Redis使用C语言进行编写的,而Uni ...
- JAVA I/O之文件复制
有没有大佬告诉我这个不要了的代码插入区(就现在这句话的区域)怎么删掉....... //一个字节一个字节的复制 public static void fun() throws IOException ...
- kubeadmin 安装k8s集群
系统设置 CentOS Linux release 7.6.1810 (Core) 修改主机名 vim /etc/hostname k8s-master hostname -F /etc/hostna ...
- Xmind的使用
Xmind是用来学习整理思维的工具
- vticker.js--垂直滚动插件
一.使用要求 列表必须是ul>li的格式 html代码 <div class=" myvticker'"> <ul> <li>1.新闻标题 ...