Fractions to Decimals
Write a program that will accept a fraction of the form N/D, where N is the numerator and D is the denominator and print the decimal representation. If the decimal representation has a repeating sequence of digits, indicate the sequence by enclosing it in brackets. For example, 1/3 = .33333333...is denoted as 0.(3), and 41/333 = 0.123123123...is denoted as 0.(123). Use xxx.0 to denote an integer. Typical conversions are:
1/3 = 0.(3)
22/5 = 4.4
1/7 = 0.(142857)
2/2 = 1.0
3/8 = 0.375
45/56 = 0.803(571428)
PROGRAM NAME: fracdec
INPUT FORMAT
A single line with two space separated integers, N and D, 1 <= N,D <= 100000.
SAMPLE INPUT (file fracdec.in)
45 56
OUTPUT FORMAT
The decimal expansion, as detailed above. If the expansion exceeds 76 characters in length, print it on multiple lines with 76 characters per line.
SAMPLE OUTPUT (file fracdec.out)
0.803(571428)
描述
写一个程序,输入一个形如N/D的分数(N是分子,D是分母),输出它的小数形式。如果小数有循环节的话,把循环节放在一对圆括号中。
例如, 1/3 =0.33333333 写成0.(3), 41/333 = 0.123123123... 写成0.(123), 用xxx.0 等表示整数。典型的转化例子:
1/3 = 0.(3)
22/5 = 4.4
1/7 = 0.(142857)
2/2 = 1.0
3/8 = 0.375
45/56 = 0.803(571428)
PROGRAM NAME
fracdec
INPUT FORMAT
单独的一行包括被空格分开的N和D(1 <= N,D <= 100000)。
SAMPLE INPUT
(file fracdec.in)
45 56
OUTPUT FORMAT
按照上面规则计算出的小数表达式.如果结果长度大于76,每行输出76个字符.
SAMPLE OUTPUT
(file fracdec.out)
0.803(571428)
======================== 华丽的分割线 ========================
这道题我不好怎么说, 看了标程写的,, 思路比较简单, 只是这种题目重来没做过, 所以不知道怎么下手..
如果余数相等的话, 那么就已经循环了,, 我用rem来存储余数和非循环小数的个数..
/*
LANG: C
ID: zqy11001
PROG: fracdec
*/
#include <stdio.h>
#define MAX 100010
#define getint(i) scanf("%d", &i)
int rm[MAX];
char buf[MAX];
char dev[MAX];
int counter;
int main(void)
{
int m, n;
int i, j;
freopen("fracdec.in", "r", stdin);
freopen("fracdec.out", "w", stdout);
getint(m);
getint(n);
sprintf(buf, "%d.", m/n);
memset(rm, -1, sizeof(rm));
m = m % n;
dev[0] = '0';
for(i = 0; ; i++){
if(m == 0){
sprintf(buf + strlen(buf), "%s", dev);
break;
}
if(rm[m] != -1){
sprintf(buf + strlen(buf), "%.*s(%s)", rm[m],
dev, dev + rm[m]);
break;
}
rm[m] = i;
m *= 10;
dev[counter++] = m / n + '0';
m = m % n;
}
for(i = 0; i < strlen(buf); i+=76){
printf("%.76s\n", buf + i);
}
return 0;
}
分享到:
相关推荐
本题涉及到的编程竞赛题目是USACO 2.4章节的"ttwo",是一道关于平面内的最短路径问题。在这个问题中,我们需要解决的是在一个10x10的网格环境中,农夫John如何尽快地追捕到两只在逃的塔姆沃斯牛。这个问题可以被视为...
[USACO 2.1.2]顺序的分数.cpp 想要题解可以关注+私信
USACO,全称为United States阿Olympiad in Informatics,是美国计算机奥林匹克竞赛,旨在为高中生提供一个学习和展示编程技能的平台。这个比赛涵盖了算法、数据结构以及问题解决等多个方面,对于想要深入理解计算机...
在USACO的训练平台上,用户通常会获得分数来评估他们解决问题的能力,这里的“3分”可能指的是解决一个问题或通过一组测试用例所获得的得分。这表明,这个压缩包可能包含了USACO训练平台上的所有练习题目、输入输出...
### USACO 2010-2011 季度竞赛概览与关键信息 #### 一、概述 美国计算机奥林匹克(USACO)是面向全球中学生的计算机科学竞赛,旨在发掘并培养计算机科学领域的年轻人才。USACO 2010-2011 季度竞赛于 2010 年 11 月...
USACO,全称为United States Computer Olympiad,是一项面向全球中学生的计算机编程竞赛,旨在提升参赛者的算法设计、问题解决和编程能力。该比赛每年举行,分为青铜、白银、黄金和铂金四个级别,难度逐渐递增。...
《USACO 合集:全面解析与学习指南》 USACO,全称为USA Computing Olympiad,是一项针对中学生举办的在线编程竞赛,旨在提升参赛者的算法设计和问题解决能力。这个合集提供了丰富的资源,包括英文原题、中文译题、...
USACO,全称United States Computer Olympiad,是一项面向全球中学生的计算机编程竞赛,旨在提升参赛者在算法设计、问题解决以及计算机科学基础方面的技能。这个压缩包文件提供了丰富的资源,帮助参赛者或学习者更好...
《USACO入门指南——第一章解析》 USACO,全称USA Computing Olympiad,是美国计算机奥林匹克竞赛,旨在培养中学生在算法和编程方面的技能。对于初学者来说,USACO提供了很好的学习路径和挑战。本文将针对USACO的第...
- **定义**: 每种物品只有一件,选择放或不放,每种物品有不同的重量和价值,目标是最小化或最大化总价值。 - **核心**: 状态转移方程 `f[k][i] = max{f[k-1][i], f[k-1][i-v[k]] + w[k]}`,其中 `f[k][i]` 表示前 `...
USACO(美国计算机奥林匹克竞赛)是面向全球中学生的一项编程竞赛,主要涉及算法和问题解决能力。这个压缩包文件“usaco历年测试数据”包含了该赛事历年的测试题目和样例输入输出数据,这对于参赛者准备比赛或者提升...
USACO,全称为United States Computer Olympiad,是一项面向中学生的国际性计算机编程竞赛,旨在提升参赛者的算法设计和编程能力。USACO比赛通常使用C++语言进行,因此"USACO 1.1 c++源程序"指的是USACO入门阶段1.1...
某些USACO题目的答案,很详细,代码清晰结构良好,算法高效易于调试
USACO,全称United States Computer Olympiad,是美国计算机奥林匹克竞赛,是一项旨在培养青少年编程技能和算法理解的国际性比赛。这个比赛对于有志于在计算机科学领域深入发展的学生来说,具有很高的学习价值和挑战...
C++是USACO比赛中常用的编程语言之一,它是一种静态类型的、编译式的、通用的、大小写敏感的、不仅支持过程化编程,也支持面向对象编程的程序设计语言。C++的特点在于其强大的性能、丰富的库支持和对底层操作的灵活...
USACO,全称United States阿Olympiad in Computer Science,是美国计算机科学奥林匹克竞赛,旨在激发中学生对计算机科学的兴趣,尤其是算法和编程技能。这个"USACO全部测试数据.zip"压缩包包含了历年来USACO比赛的...
USACO(USA Computing Olympiad)是美国计算机奥林匹克竞赛,是一项面向中学生的编程竞赛,旨在提升学生的算法设计、编程和问题解决能力。该比赛通常包括训练营和一系列在线比赛,最终选拔出优秀选手代表美国参加...
USACO,全称United States Computer Olympiad,是一项面向全球中学生的计算机编程竞赛,旨在提升参赛者的算法设计、编程能力和问题解决能力。本压缩包包含了USACO比赛的题解、源代码以及对应的中文翻译,对于想要...
USACO,全称为United States Computer Olympiad,是一项面向美国中学生的编程竞赛,旨在培养青少年在算法设计、问题解决和计算机科学方面的技能。这个压缩包包含的是2005年度USACO比赛的测试数据,对于参赛者或者对...