UVA 10555 - Dead Fraction

题目链接

题意:给定一个循环小数,不确定循环节,求出该小数用分数表示,而且分母最小的情况

思路:推个小公式

一个小数0.aaaaabbb... 表示为n/m形式,而且a为整数部分有c位, b为小数部分有d位

那么aaaaa.bbb...和aaaaabbb....分别能够表示为10c∗(n/m)和10c+d∗(n/m)

两式相减得:aaaaabbbaaaaa=(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(数论+无限循环小数)的更多相关文章

  1. uva 10555 - Dead Fraction)(数论)

    option=com_onlinejudge&Itemid=8&category=516&page=show_problem&problem=1496" st ...

  2. poj 1930 Dead Fraction(循环小数化分数)

    Dead Fraction Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 3478   Accepted: 1162 Des ...

  3. POJ 1930 Dead Fraction

    POJ 1930 Dead Rraction 此题是一个将无限循环小数转化为分数的题目 对于一个数 x=0.abcdefdef.... 假设其不循环部分的长度为m(如abc的长度为m),循环节的长度为 ...

  4. Mathematics:Dead Fraction(POJ 1930)

    消失了的分式 题目大意:某个人在赶论文,需要把里面有些写成小数的数字化为分式,这些小数是无限循环小数(有理数),要你找对应的分母最小的那个分式(也就是从哪里开始循环并不知道). 一开始我也是蒙了,这尼 ...

  5. 无限循环小数POJ1930

    题意:给定一个无限循环小数,求其分数形势,要求分母最小 分析:看了别人的题解才做出来的,将无限循环小数转化成分数,分为纯循环和混循环两种形式. (1)对于纯循环:用9做分母,有多少个循环数就几个9,比 ...

  6. Dead Fraction [POJ1930]

    题意: 很有意思的一道题,,将一个无限循环小数转化成分母最小的精确分数值....,循环的部分不一定是最后一位. Sample Input 0.2... 0.20... 0.474612399... 0 ...

  7. POJ 1930 Dead Fraction (循环小数-GCD)

    题意:给你一个循环小数,化成分数,要求分数的分母最小. 思路:暴力搜一遍循环节 把循环小数化分数步骤: 纯循环小数化分数 纯循环小数的小数部分可以化成分数,这个分数的分子是一个循环节表示的数,分母各位 ...

  8. UVA 10627 - Infinite Race(数论)

    UVA 10627 - Infinite Race option=com_onlinejudge&Itemid=8&page=show_problem&category=516 ...

  9. uva 10560 - Minimum Weight(数论)

    题目连接:uva 10560 - Minimum Weight 题目大意:给出n,问说至少须要多少个不同重量的砝码才干称量1~n德重量,给出所选的砝码重量,而且给出k,表示有k个重量须要用上述所选的砝 ...

随机推荐

  1. POJ_1163_The triangle

    The Triangle Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 40079   Accepted: 24144 De ...

  2. DataWhale学习计划(第六期):python基础任务6

    file-settings 然后选择project Interpreter 把project Interpreter复选框里面的地址换成你安装的anaconda下的python.exe的地址,点击sh ...

  3. CMU Database Systems - Two-phase Locking

    首先锁是用来做互斥的,解决并发执行时的数据不一致问题 如图会导致,不可重复读 如果这里用lock就可以解决,数据库里面有个LockManager来作为master,负责锁的记录和授权 数据库里面的基本 ...

  4. 【2018百度之星资格赛】 A 问卷调查 - 位运算&动规

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6344 参考博客:在此感谢http://www.cnblogs.com/LQLlulu/p/941923 ...

  5. np.tile(), np.repeat() 和 tf.tile()

    以上三个函数,主要区别在于能够拓展维度上和重复方式: np.tile() 能够拓展维度,并且整体重复: a = np.array([0,1,2]) np.tile(a,(2,2)) # out # a ...

  6. wannafly-day1 Problem A - Birthday

    思路:队友贪心WA了,然后就没有然后了,自己也是第一次接触最小费用流的题.借这个题来学习一下,利用Spfa每次来找到一个最短的路径同时保存路径,每一次寻找最短路径就将这条路的最小费用流给剪掉,然后继续 ...

  7. idea 背景颜色设置

    1. 设置当前鼠标所在行颜色 2. 设置编辑区颜色

  8. __setitem__() __getitem__() __delitem__()

    #item系列 和对象使用[]访问值有联系 #obj={'k':'v'} #print(obj) #print(obj['k']) class B: def __getitem__(self, ite ...

  9. 数据库——mysql如何获取当前时间---https://www.cnblogs.com/Chenshuai7/p/5136469.html

    数据库——mysql如何获取当前时间 1.1 获得当前日期+时间(date + time)函数:now() -------https://www.cnblogs.com/Chenshuai7/p/51 ...

  10. ZOJ 3349 Special Subsequence

    Special Subsequence Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on ZJU. Ori ...