70 条题解
-
-25661lhr LV 8 @ 2016-11-29 00:02:48
#include <iostream> #include <cstdlib> #include <cstdio> #include <climits> #include <cmath> #include <algorithm> #include <functional> #include <iterator> #include <cstring> #include <set> #include <vector> #include <queue> #include <list> #include <cctype> #include <string> using namespace std; char ss[5000000]; int main() { while(scanf("%s",ss)!=EOF) { vector<int> a; if(ss[0]=='[') { int len=strlen(ss); int k=1; int num=0; while(ss[k]>='0'&&ss[k]<='9') { num=num*10+(ss[k]-'0'); k++; } a.push_back(num); //连分数第一个数可以为任意整数,后面的数是0到9之间的 //然而 。。。测试数据的第一个数全部都是0到9之间的。。 for(int i=k+1;i!=len;i++) { if(ss[i]>='0'&&ss[i]<='9') { num=ss[i]-'0'; a.push_back(num); } } if(a.size()==1) { printf("%d\n",a.back()); //第一个雷 如果是【2452】 则直接输出 2452 continue; } int fenmu,fenzi; fenzi=0; fenmu=1; while(a.size()!=0) { fenzi=a.back()*fenmu+fenzi; a.pop_back(); swap(fenmu,fenzi); } swap(fenmu,fenzi); printf("%d/%d\n",fenzi,fenmu); } //___________________________________________________________________ else { int i=0; int zuo,you; zuo=you=0; while(ss[i]!='/') { zuo=zuo*10+(ss[i]-'0'); i++; } i++; while(ss[i]) { you=you*10+(ss[i]-'0'); i++; } if(zuo%you==0) { printf("[%d]\n",zuo/you); //第二个雷 如果是26/13 这样的直接输出【2】 continue; } printf("["); printf("%d;",zuo/you); zuo=zuo-(zuo/you)*you; swap(zuo,you); while(1) { printf("%d",zuo/you); if(you!=1&&zuo%you!=0) //第三个雷 测试数据可能是个假分数!!! { //比如26/8 算一步之后就变成8/2 这时候4已经打印出来了 printf(","); //所以直接打印】结束 zuo%you!=0 非常重要 否则RE zuo=zuo-(zuo/you)*you; swap(zuo,you); } else {printf("]\n");break;} } } } return 0; }
-
-22016-02-21 11:12:51@
水题,一次AC
#include <iostream>
#include<string>
using namespace std;
string a, s;
bool u;
int b, x, y, i, j, k, p[100], t, o, e,d;
int main()
{
while (cin >> a)
{
for (k = 0; k < 10; k++)
{
p[k] = 0;
}
if (a[0] == '[')
{
t = 0;
for (k = 0; k <a.size(); k++)
{
if ((a[k] >= '0') && (a[k] <= '9'))
{
u = true;
p[t] = p[t] * 10 + (int)(a[k] - '0');
}
else
{
if (u)
{
t++;
}
u = false;
}
}
t--;
x = p[t];
y = 1;
for (k = t - 1; k >= 0; k--)
{
b = x;
x = y + p[k] * x;
y = b;
}
i = x;
j = y;
while (x%y != 0)
{
t = y;
y = x%y;
x = t;
}
i = i / y;
j = j / y;
if (j == 1)
cout << i << endl;
else
cout << i << '/' << j << endl;
}
else
{
t = 0;
for (k = 0; k < a.size(); k++)
{
if ((a[k] >= '0') && (a[k] <= '9'))
{
p[t] = p[t] * 10 + (int)(a[k] - '0');
}
else
t++;
}
if (t == 0)
cout << '[' << p[0] << ']'<<endl;
else
{
i = p[0];
j = p[1];
while (i%j != 0)
{
t = j;
j = i%j;
i = t;
}
p[1] = p[1] / j;
p[0] = p[0] / j;
x = p[0];
y = p[1];
t = 0;
cout << '[';
while (x != 1)
{
o = x%y;
e = x / y;
if (t == 0)
cout << e;
else
if (t == 1)
cout << ';' << e;
else
cout << ',' << e;
x = o;
if (x != 1)
{
d = y;
y = x;
x = d;
}
t++;
}
if (y != 0)
cout << ',' << y;
cout << ']' << endl;
}
}
}
return 0;
} -
-22009-11-09 21:16:37@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案错误...程序输出比正确答案长
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:80 有效耗时:0msprogram p1696;
var ss:ansistring;
le,ri:int64;
aa:array[0..105] of longint;function rr(a,s:Longint):longint;
var d,f:Longint;
begin
d:=a mod s;
while d0 do begin
a:=s; s:=d;
d:=a mod s;
end;
rr:=s;
End;Procedure doo1;
var i,n,kon,jj,k,oo:longint;begin
fillchar(aa,sizeof(aa),0);
delete(ss,1,1);
delete(ss,length(ss),1);
kon:=pos(';',ss);
if kon=0 then begin val(ss,k,oo); write(k,'/1'); end;
n:=0;
inc(n);
val(copy(ss,1,kon-1),aa[n],oo);
delete(ss,1,kon);kon:=pos(',',ss);
while kon0 do begin
inc(n);
val(copy(ss,1,kon-1),aa[n],oo);
delete(ss,1,kon);
kon:=pos(',',ss);
End;
inc(n);
val(ss,aa[n],oo);
{ok}
le:=aa[n]; ri:=1;
for i:=n-1 downto 1 do begin
k:=le; le:=ri; ri:=k;
inc(le,ri*aa[i]);
jj:=rr(ri,le);
le:=le div jj; ri:=ri div jj;
end;
writeln(le,'/',ri);
END;PROcedure ddd2;
var i,n,kon,jj,k,oo:longint;
begin
fillchar(aa,sizeof(aa),0);
kon:=pos('/',ss);
val(copy(ss,1,kon-1),le,oo);
delete(ss,1,kon);
val(ss,ri,oo);n:=1;
aa[n]:=le div ri;
le:=le mod ri;
if le=0 then write('[0;]');
while le1 do begin
k:=le; le:=ri; ri:=k;
inc(n);
aa[n]:=le div ri; le:=le mod ri;
jj:=rr(ri,le);
le:=le div jj; ri:=ri div jj;
ENd;
inc(n); aa[n]:=ri;
write('[',aa[1],';',aa[2]);
for i:=3 to n do
write(',',aa[i]);
writeln(']');
End;BEGIN
while not eof do begin
readln(ss);if pos('[',ss)=0 then ddd2
Else doo1;
End;
end.人笨就是悲哀!!
-
-22009-11-08 10:47:14@
编译通过...
├ 测试数据 01:答案正确...ms
├ 测试数据 02:答案正确...ms
├ 测试数据 03:答案正确...ms
├ 测试数据 04:答案正确...ms
├ 测试数据 05:答案正确...ms
Accepted 有效得分:100 有效耗时:0ms暴力模拟 AC~
-
-22009-11-07 01:55:25@
岛儿的生日比赛第一题
我猜是数学题…… -
-22009-11-07 01:18:21@
板凳。
-
-22009-11-05 21:26:43@
沙发啊...
-
-32016-04-14 17:56:52@
我的ac率
-
-32009-11-10 14:04:29@
水题,模拟,1次AC。
我没有加任何约分的处理都AC了,这让我们深深地了解到出题人是多么阴险!
我的方法分子为1退出没有任何问题。 -
-32009-11-09 09:29:15@
呃 果然 好阴险