70 条题解
-
-1
wagnfzwxl LV 8 @ 8 年前
-
-18 年前@
-
-19 年前@
-
-115 年前@
楼下的说得很对
注意了:[4]---|4
2/1---|[2]
就ac了 -
-115 年前@
这个C++真的很诡异:
不同的读入方式分数居然不一样………………
cin>>s;
while(!cin.eof())
{top=0;
memset(a,0,sizeof(a));
if(s[0]=='[') solve1();
else solve2();
cin>>s;
}
20分,除第四点外其余全错
while(!cin.eof())
{cin>>s; top=0;
memset(a,0,sizeof(a));
if(s[0]=='[') solve1();
else solve2();
}
80分,第四个点错
do
{cin>>s; top=0;
memset(a,0,sizeof(a));
if(s[0]=='[') solve1();
else solve2();
}while(!cin.eof())
80分,第三个点格式错误 (- -!)最后,忍无可忍……
while(getline(cin,s))
{top=0;
memset(a,0,sizeof(a));
if(s[0]=='[') solve1();
else solve2();
}
终于AC用C++的同志看来得注意一下
-
-115 年前@
我终于知道了...
第4组有这种情况
[4]->4
2/1->[2]
而不是[4;]->4/1
!!!!!!!!!!!!!!!!
我的AC率.......... -
-115 年前@
├ 测试数据 04:答案正确... 0ms
BS这种无聊的题目……BS出题人这等恶心的数据……
-
-115 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
交了无数次,提醒下大家在分数转连分数过程中有可能会有例如2/4的情况,所以不能以分子=1为退出条件 -
-115 年前@
就是哈,第4个点是什么回事啊 ??//
老是207???
哎,那个大牛提示一下????????/ -
-115 年前@
对此题极度。。无语。。
X/1 要输出 X 。。。 -
-115 年前@
谁能解释下题目?
-
-115 年前@
几个阴人的地方
- 3/1---|> 3
- [3;]---|>[3]
其中个人觉得第1点不合理 类似3这种,根本不是分数,应该写成3/1才对
- 3/1---|> 3
-
-115 年前@
第4个点到底是什么啊?
-
-115 年前@
第4个点到底什么意思啊!!!
-
-115 年前@
program lx;
var str:string;
flag,s:longint;
a:array [1..1000] of longint;
procedure init;
var sum,i,weight:longint;
ok:boolean;
begin
readln(str);
if str[length(str)]=']' then flag:=0 else flag:=1;
weight:=1;
s:=0;
i:=length(str);
while i>0 do
begin
sum:=0;
ok:=false;
weight:=1;
while str[i] in ['1'..'9'] do
begin
ok:=true;
sum:=sum+(ord(str[i])-ord('0'))*weight;
weight:=weight*10;
dec(i);
end;
if ok then
begin
inc(s);
a:=sum;
end;
dec(i);
end;
if flag=0 then
if str[2]='-' then a:=a*(-1);
if flag=1 then
if str[1]='-' then a:=a*(-1);
end;function gcd(a,b:longint):longint;
begin
if b=0 then gcd:=a
else gcd:=gcd(b,a mod b);
end;procedure work0;
var fm,fz,i,temp:longint;
begin
fm:=a[1];
fz:=1;
for i:=2 to s do
begin
fz:=fz+a[i]*fm;
temp:=fz;
fz:=fm;
fm:=temp;
end;
if fz div gcd(fz,fm)=1 then writeln(fm div gcd(fz,fm))
else if fz div gcd(fz,fm)=0 then
begin
k:=gcd(fz,fm);
fz:=fz div k;
fm:=fm div k;
write(fz div fm,';');
end
else
begin
h:=0;
while fz -
-115 年前@
悲剧啊,和ac程序输出一样,和测试数据也一样,却爆了一个点。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
-
-115 年前@
-
-115 年前@
VAR
a:array[1..2000]of longint;
s:string;
w,p,l,m,y,i,n,key,x:longint;function gcd(a,b:longint):longint;
begin
if b=0 then gcd:=a
else gcd:=gcd(b,a mod b);
end;procedure change(var a,b:longint);
var l:longint;
begin
l:=a;
a:=b;
b:=l;
end;procedure init;
begin
readln(s);if s[1]='['then
begin
y:=pos(';',s);if y=0 then begin val(copy(s,2,length(s)-2),x);writeln(x);exit;end;
w:=y;
val(copy(s,2,w-2),a[1]);
delete(s,1,w);
p:=1;repeat
inc(p);
w:=pos(',',s);
if w0 then
begin
val(copy(s,1,w-1),a[p]);
delete(s,1,w);
end;
until w=0;
l:=length(s);
val(copy(s,1,l-1),a[p]);
endelse
begin
y:=pos('/',s);
w:=y;
val(copy(s,1,w-1),a[1]);val(copy(s,w+1,length(s)-w),a[2]);
key:=gcd(a[1],a[2]);
a[1]:=a[1]div key; a[2]:=a[2]div key;
end;end;
procedure main;
begin
if y=0 then exit;
if p0then
begin
n:=a[p];
dec(p);
m:=a[p]*n+1;
change(m,n);if p>1 then
beginrepeat
dec(p);
m:=n*a[p]+m;
change(m,n);
key:=gcd(m,n);
m:=m div key;
n:=n div key;
until p=1;
end;
writeln(n, '/',m);
endelse
begin
if a[2]=1then begin writeln('[',a[1],']');exit;end;
write('[');
write(a[1]div a[2],';');
a[1]:=a[1]mod a[2];
change(a[1],a[2]);while a[2]1 do
begin
write(a[1]div a[2],',');
a[1]:=a[1]mod a[2];
change(a[1],a[2]);
end;
write(a[1],']'); writeln;
end
end;begin
while not eof do
begin
p:=0;
init;
main;
end;
end. -
-115 年前@
考的时候想到了X/1的情况,也写了,可就是没想到【X】的情况
比如【2,1】我答案是3,【3】就成了10/3了,悲剧 -
-115 年前@
呃呃呃
题目没说要把X/1输成X吧
难道是让我们去猜题目要求??