主题:题目:数组
璇木新兰
[专家分:0] 发布于 2009-12-20 22:23:00
帮帮忙,各位师哥师姐们!!!![em2][em18]
分数变小数(FTOR)
提交文件名:FTOR.PAS
问题描述:
编写一个程序,接受一个以N & D的形式输入的分数,其中N为分子,D为分母,N和D都是正整数,输出它的小数形式。如果它的小数形式存在循环节,要将其用括号括起来。
0 <= N <= 65535,0 < D <= 65535,设运算结果小数点后最多保留100位。
输入输出样例:
INPUT : 1/3
OUTPUT :0.(3)
INPUT :22/5
OUTPUT :4.4
INPUT :45/56
OUTPUT :0.803(571428)
回复列表 (共8个回复)
沙发
小田甜 [专家分:3910] 发布于 2009-12-25 17:41:00
var
t:string;
i,j,k:integer;
s,y:array [0..1000] of word;
n,d:word;
begin
readln(t);
val(copy(t,1,pos('/',t)-1),n,i);
val(copy(t,pos('/',t)+1,length(t)-pos('/',t)),d,i);
i:=-1; repeat
inc(i); s[i]:=n div d; y[i]:=n mod d;
for j:=1 to i-1 do if (y[i]=y[j]) and (s[i]=s[j]) then break;
if (i<>j) and (y[i]=y[j]) and (s[i]=s[j]) then break;
n:=n mod d*10;
until y[i]=0;
write(s[0],'.');
for k:=1 to j-1 do write(s[k]);
if y[i]<>0 then begin
write('(');
for k:=j to i-1 do write(s[k]);
write(')');
end;
readln;
end.
板凳
璇木新兰 [专家分:0] 发布于 2009-12-26 23:24:00
太太太.....感谢了
[em28][em28][em28][em28]
3 楼
小勇士来了 [专家分:220] 发布于 2010-06-28 22:18:00
var
t:string;
i,j,k:integer;
s,y:array [0..1000] of word;
n,d:word;
begin
readln(t);
val(copy(t,1,pos('/',t)-1),n,i);
val(copy(t,pos('/',t)+1,length(t)-pos('/',t)),d,i);
i:=-1; repeat
inc(i); s[i]:=n div d; y[i]:=n mod d;
for j:=1 to i-1 do if (y[i]=y[j]) and (s[i]=s[j]) then break;
if (i<>j) and (y[i]=y[j]) and (s[i]=s[j]) then break;
n:=n mod d*10;
until y[i]=0;
write(s[0],'.');
for k:=1 to j-1 do write(s[k]);
if y[i]<>0 then begin
write('(');
for k:=j to i-1 do write(s[k]);
write(')');
end;
readln;
end.
4 楼
angwuy [专家分:2280] 发布于 2010-06-30 13:11:00
这题可以不开任何数组,原题是usaco的fracdec
5 楼
小猪快跑哎呦 [专家分:20] 发布于 2010-07-01 08:58:00
[求助]Eraser2000老师一道数组题目的疑惑hits:66
6 楼
chip [专家分:80] 发布于 2010-08-06 11:53:00
恩,值得考虑一下!
7 楼
chip [专家分:80] 发布于 2010-08-06 11:55:00
先用高精求,再用dp寻找循环节便可!
8 楼
小田甜 [专家分:3910] 发布于 2010-08-06 23:34:00
首先说这题目用不到高精度,其次也用不到dp。
高精度还是一种实现方法,而dp就完全不靠谱了。
当然,这只是[b]个人认为[/b]。
我来回复