求大佬帮我看看 第三和第五个点WA

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 10100

using namespace std;

char s[MAXN];

int a[MAXN],n;

bool real;

inline void go() {
real=false;
int FZ=1,FM=0;
int x=0,len=strlen(s),l=0;
for(int i=len-1;i>=0;i--) {
if(s[i]>='0'&&s[i]<='9') x=x*10+s[i]-48;
if(s[i]==','||s[i]==';') {
real=true;
if(!FM) FM=x;
else {
x=x*FM;
FZ+=x;
int t=FM;
FM=FZ;
FZ=t;
}
x=0;
}
if(s[i]=='[') {
l=x;
x=x*FM;
FZ+=x;
break;
}
}
if(!real) printf("%d\n",l);
else {
int p=__gcd(FZ,FM);
if(FM/p==1) printf("%d\n",FZ/p);
else printf("%d/%d\n",FZ/p,FM/p);
}
return;
}

inline void GO(){
n=0;
int FZ=0,FM=0;
int x=0,len=strlen(s);
for(int i=0;i<len;i++) {
if(s[i]>='0'&&s[i]<='9') x=x*10+s[i]-48;
if(s[i]=='/') {
FZ=x;
x=0;
}
}
FM=x;
while(true) {
if(FM==0||FM==1) {
a[++n]=FZ;
break;
}
a[++n]=FZ/FM;
FZ-=a[n]*FM;
int t=FZ;
FZ=FM;
FM=t;
}
if(n==1) printf("[%d]\n",a[1]);
else {
printf("[%d:",a[1]);
for(int i=2;i<n;i++) printf("%d,",a[i]);
printf("%d]",a[n]);
}
return;
}

int main() {
while(scanf("%s",s)!=EOF){
if(s[0]=='[') go();
else GO();
}
return 0;
}

0 条评论

目前还没有评论...

信息

ID
1696
难度
7
分类
其他 | 数学模拟 点击显示
标签
递交数
5147
已通过
1136
通过率
22%
被复制
3
上传者