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个重量须要用上述所选的砝 ...
随机推荐
- POJ_1163_The triangle
The Triangle Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 40079 Accepted: 24144 De ...
- DataWhale学习计划(第六期):python基础任务6
file-settings 然后选择project Interpreter 把project Interpreter复选框里面的地址换成你安装的anaconda下的python.exe的地址,点击sh ...
- CMU Database Systems - Two-phase Locking
首先锁是用来做互斥的,解决并发执行时的数据不一致问题 如图会导致,不可重复读 如果这里用lock就可以解决,数据库里面有个LockManager来作为master,负责锁的记录和授权 数据库里面的基本 ...
- 【2018百度之星资格赛】 A 问卷调查 - 位运算&动规
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6344 参考博客:在此感谢http://www.cnblogs.com/LQLlulu/p/941923 ...
- np.tile(), np.repeat() 和 tf.tile()
以上三个函数,主要区别在于能够拓展维度上和重复方式: np.tile() 能够拓展维度,并且整体重复: a = np.array([0,1,2]) np.tile(a,(2,2)) # out # a ...
- wannafly-day1 Problem A - Birthday
思路:队友贪心WA了,然后就没有然后了,自己也是第一次接触最小费用流的题.借这个题来学习一下,利用Spfa每次来找到一个最短的路径同时保存路径,每一次寻找最短路径就将这条路的最小费用流给剪掉,然后继续 ...
- idea 背景颜色设置
1. 设置当前鼠标所在行颜色 2. 设置编辑区颜色
- __setitem__() __getitem__() __delitem__()
#item系列 和对象使用[]访问值有联系 #obj={'k':'v'} #print(obj) #print(obj['k']) class B: def __getitem__(self, ite ...
- 数据库——mysql如何获取当前时间---https://www.cnblogs.com/Chenshuai7/p/5136469.html
数据库——mysql如何获取当前时间 1.1 获得当前日期+时间(date + time)函数:now() -------https://www.cnblogs.com/Chenshuai7/p/51 ...
- ZOJ 3349 Special Subsequence
Special Subsequence Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on ZJU. Ori ...