来自蒟蒻的求助 Orz!

P1572 计算分数

第一个问题,你是怎样在控制台输入的?
by zzyhzyy @ 2021-12-04 17:18:31


把 ```cpp ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); ``` 删掉即可。
by _l_l_ @ 2021-12-04 17:21:20


@[disangan223](/user/109114) 不行啊,这几句只是为了加快读取速度
by YSGTX @ 2021-12-08 15:21:34


@[YSGTX](/user/531213) 我的意思是让 @ zzyhzyy 把上述代码删掉,这样就能读入了
by _l_l_ @ 2021-12-08 15:25:08


### ~~30分钟只调了一次就A了(开心)~~ ```cpp #include<iostream> #include<cstring> #include<cmath> #include<vector> #include<queue> #include<deque> #include<cstdio> #include<algorithm> #include<string> #include<list> #define itn int #define int long long using namespace std; string s; int po,top,sum,z,n,m; int q[500005]; char p; int a[3][500005]; int gcdd(int x,int y){ int xx=x,yy=y; int o=x%y; while(o){ x=y; y=o; o=x%y; } return xx*yy/y; } int gcd(int x,int y){ int o=x%y; while(o){ x=y; y=o; o=x%y; } return y; } signed main(){ cin>>s; s=s+'-'; q[1]=1; if(s[0]=='-')q[1]=0; for(int i=0;i<s.size();i++){ if(s[i]>='0'&&s[i]<='9'){ po=po*10+s[i]-'0'; }else{ if(s[i]=='-'||s[i]=='+'){ a[2][top]=po; if(s[i]=='-')q[top+1]=0; else q[top+1]=1; po=0; }else{ a[1][++top]=po; po=0; } } } z=a[2][1]; /* for(int i=1;i<=top;i++){ cout<<a[1][i]<<" "<<a[2][i]<<"\n"; } */ for(int i=2;i<=top;i++){ z=gcdd(z,a[2][i]); } /* for(int i=1;i<=top;i++){ cout<<q[i]<<"\n"; } */ for(int i=1;i<=top;i++){ if(q[i]==0){ sum-=a[1][i]*(z/a[2][i]); }else{ sum+=a[1][i]*(z/a[2][i]); } } if(sum%z){ if(sum<0){ cout<<'-'; sum=abs(sum); } n=gcd(sum,z); if(n==1){ printf("%lld/%lld",sum,z); }else{ printf("%lld/%lld",sum/n,z/n); } return 0; } n=gcd(sum,z); if(n==1){ printf("%lld",sum); }else{ printf("%lld",sum/n); } return 0; } ```
by Linyize257 @ 2022-04-14 19:59:37


|