PAT_B_结构-02. 有理数加法(15)
2014-08-17 18:10
387 查看
输入格式:
输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。
输出格式:
在一行中按照“a/b”的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例1:
1/3 1/6
输出样例1:
1/2
输入样例2:
4/3 2/3
输出样例2:
2
主要考量了结构体的基本使用,主要编程思想先输入,然后求分母公约数,最后化简输出。除此之外,还可以直接相乘,然后化简输出。提供一种AC的Sources Codes
输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。
输出格式:
在一行中按照“a/b”的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例1:
1/3 1/6
输出样例1:
1/2
输入样例2:
4/3 2/3
输出样例2:
2
主要考量了结构体的基本使用,主要编程思想先输入,然后求分母公约数,最后化简输出。除此之外,还可以直接相乘,然后化简输出。提供一种AC的Sources Codes
#include <iostream> using namespace std; struct Data { int fengzi; int fengmu; }; int gongyueshu(int a,int b) { int i; int result=1; for (i=1; i<=a&&i<=b; i++) { if (a%i==0&&b%i==0) { result*=i; a/=i; b/=i; i=1; } } result=result*a*b; return result; } int main(int argc, const char * argv[]) { Data a,b; int m,n; scanf("%d/%d %d/%d",&a.fengzi,&a.fengmu,&b.fengzi,&b.fengmu); m=gongyueshu(a.fengmu,b.fengmu); n=a.fengzi*m/a.fengmu+b.fengzi*m/b.fengmu; for (int i=1; i<=m&&i<=n; i++) { if (m%i==0&&n%i==0) { m/=i; n/=i; i=1; } } if (m==1) { printf("%d\n",n); } else { printf("%d/%d\n",n,m); } return 0; }
相关文章推荐
- 结构-02. 有理数加法(15)
- 结构-02. 有理数加法(15)
- 结构-02. 有理数加法(15)
- 结构-02. 有理数加法(15)
- 结构-02. 有理数加法(15)
- 结构-02. 有理数加法(15)
- 结构-02. 有理数加法(15)
- 结构-02. 有理数加法(15)
- 数据结构 PAT 02-线性结构1 一元多项式的乘法与加法运算
- PAT数据结构_02-线性结构4 Pop Sequence (25分)
- 数据结构 PAT 02-线性结构2 Reversing Linked List 单链表实现
- PAT 02-线性结构3 Reversing Linked List 【JAVA实现】
- 02-线性结构1 两个有序链表序列的合并(15 分)
- PAT 02-线性结构3. Pop Sequence (25)
- PAT 02-线性结构4 Pop Sequence【JAVA实现】
- 数据结构 PAT 02-线性结构3 Pop Sequence
- 02-线性结构1 两个有序链表序列的合并(15 分)
- PAT数据结构_02-线性结构1 两个有序链表序列的合并 (15分)
- [PAT] 02-线性结构2 一元多项式的乘法与加法运算
- 02-线性结构1 两个有序链表序列的合并(15 分)