【NYOJ】[111]分数加减法
来源:互联网 发布:淘宝摇一摇在哪 编辑:程序博客网 时间:2024/05/22 22:48
因为输出形式也是分数
所以这一题还是挺有意思的
思路不难 数学问题
需要考虑的特殊情况
一是结果小于0
二是结果为整数
三是结果需要化简
#include<stdio.h>int gcd(int a,int b) { if(b==0) return a; else return gcd(b,a%b);}int main() { int a,b,c,d; char s; while(scanf("%d/%d%c%d/%d",&a,&b,&s,&c,&d)!=EOF) { int m,n=b*d; a*=n/b; c*=n/d; if(s=='+') m=a+c; else { if(a<c) { printf("-"); m=c-a; } else m=a-c; } if(!m) printf("0\n"); else if(m%n==0) { printf("%d\n",m/n); } else { int t=gcd(m,n); m/=t; n/=t; printf("%d/%d\n",m,n); } } return 0;}
标程用的字符串记录算式
但思路还是一样的
#include<stdio.h>char str[20];int Gcd(int m,int n) { if (m==0) return n; return Gcd(n%m,m);}int main() { int fz,fm,gcd; while(scanf("%s",str)!=EOF) { if(str[3]=='-') fz=(str[0]-'0')*(str[6]-'0')-(str[2]-'0')*(str[4]-'0'); else fz=(str[0]-'0')*(str[6]-'0')+(str[2]-'0')*(str[4]-'0'); if(fz) { fm=(str[2]-'0')*(str[6]-'0'); gcd=Gcd(fz,fm); if(gcd<0) gcd=-gcd; if(fm/gcd==1) printf("%d\n",fz/gcd); else printf("%d/%d\n",fz/gcd,fm/gcd); } else puts("0"); }}
题目地址:【NYOJ】[111]分数加减法
0 0
- NYOJ 111 分数加减法
- NYOJ,111,分数加减法
- NYOJ 111 分数加减法
- NYOJ-111-分数加减法
- NYOJ-111 分数加减法
- NYOJ 111 分数加减法
- nyoj-111-分数加减法
- nyoj 111 分数加减法
- nyoj 111 分数加减法
- nyoj 111 分数加减法
- NYOJ--111 分数加减法
- NYOJ 111 分数加减法
- NYOJ-111分数加减法
- 【NYOJ】[111]分数加减法
- nyoj 111分数加减法
- NYOJ-111 分数加减法
- NYOJ-111 分数加减法
- NYOJ 111 分数加减法
- 卫星地图(貌似USACO)
- cf#30-K - Codeforces World Finals-模拟题-日期
- 【NYOJ】[101]两点距离
- 函數數組的綜合應用
- CF#24-B - F1 Champions
- 【NYOJ】[111]分数加减法
- else if 语句的应用
- 线程基础:线程池——基本使用(下)
- 连通图小结
- 模拟测试框架-Mockito
- openCV学习记录:滤镜:反色
- DEZENDER
- Embarcadero Delphi 10 Seattle Update1 v23.0.21418.4207 Lite v12.1 精简版
- (一二九)类中使用new