HDU 1717 小数化分数2

http://acm.hdu.edu.cn/showproblem.php?pid=1717

之前莫名WA了挺多次的有趣的题orz 感觉还是写麻烦了

注意字符串处理

代码:  0MS  1068K

#include <cstdio>
#include <cstring>
using namespace std;

int gcd(int m, int n) {
    int r;
    while (n) {
        r = m % n;
        m = n;
        n = r;
    }
    return m;
}

int main() {
    int t;
    char s[15];
    scanf("%d", &t);
    while (t--) {
        scanf("%s", s);
        int a = 0, b = 0, a10 = 1, b10 = 1, i = 2, lens = strlen(s) - 2;
        while (s[i] != ‘(‘ && i < lens + 2) {
            a = a * 10 + s[i++] - ‘0‘;
            a10 *= 10;
        }
        int pos = i++;
        while (s[i] != ‘)‘ && i < lens + 2) {
            b = b * 10 + s[i++] - ‘0‘;
            b10 *= 10;
        }
        if (!a && !b) {
            printf("0\n");
        }
        else {
            int m, n, lenend = strlen(s + pos);
            if (*(s + pos) == ‘(‘) {
                lens -= 2;
                lenend -= 2;
            }
            if (!b) {
                m = a;
                n = a10;
            }
            else {
                m = a * b10 + b - a;
                n = (b10 - 1) * a10;
            }
            int gcdn = gcd(n, m);
            printf("%d/%d\n", m / gcdn, n / gcdn);
        }
    }
    return 0;
}
时间: 2025-01-01 00:36:34

HDU 1717 小数化分数2的相关文章

hdu 1717 小数化分数2 (数论)

点我点我点我!!! 接下来要做的就是模拟上述过程了. 静下来想一下自己要得到的信息. 然后拿出来,就可以了,模拟嘛,都是这样的. #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; char str[20]; int gcd(int a,int b) { return a%b==0?b:gcd(b,a%b); }

【HDOJ】1717 小数化分数2

简单字符串处理. 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <ctype.h> 5 6 #define MAXN 25 7 char str[MAXN]; 8 int ten[15]; 9 10 int gcd(int m, int n) { 11 if (m == 0) 12 return n; 13 if (m > n) 14 return gcd(

hdu1717 小数化分数2

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1717 小数化分数2 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2921    Accepted Submission(s): 1187 Problem Description Ray 在数学课上听老师说,任何小数都能表示成分数的形式

hdu1717 小数化分数

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1717 小数化分数2 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5375    Accepted Submission(s): 2188 Problem Description Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他

(hdu step 2.1.8)小数化分数2(小数化分数——包括了循环小数化分数的情况)

题目: 小数化分数2 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2783 Accepted Submission(s): 993   Problem Description Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢?请你写一个程序不但可以

小数化分数2

小数化分数2 题目 Problem Description Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢? 请你写一个程序不但可以将普通小数化成最简分数,也可以把循环小数化成最简分数. Input 第一行是一个整数N,表示有多少组数据. 每组数据只有一个纯小数,也就是整数部分为0.小数的位数不超过9位,循环部分用()括起来. Output 对每一个对应的小数化成最简分数后输出,占一行. Sample

HDU1717小数化分数2

小数化分数2 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4278    Accepted Submission(s): 1725 Problem Description Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢?请你写一个程序不但可以

(小数化分数)小数化分数2 -- HDU --1717

链接: http://acm.hdu.edu.cn/showproblem.php?pid=1717 举例: 0.24333333…………=(243-24)/900=73/3000.9545454…………=(954-9)/990=945/990=21/22 代码: #include<stdio.h> #include<string.h> #define N 110 int gcd(int a, int b) { return b==0?a:gcd(b, a%b); } int ma

ACM学习历程—HDU1717 小数化分数2(gcd)

Description Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢? 请你写一个程序不但可以将普通小数化成最简分数,也可以把循环小数化成最简分数. Input 第一行是一个整数N,表示有多少组数据. 每组数据只有一个纯小数,也就是整数部分为0.小数的位数不超过9位,循环部分用()括起来. Output 对每一个对应的小数化成最简分数后输出,占一行. Sample Input 3 0.(4) 0.5