题干:
Mr. Frog recently studied how to add two fractions up, and he came up with an evil idea to trouble you by asking you to calculate the result of the formula below:
As a talent, can you figure out the answer correctly?
Input
The first line contains only one integer T, which indicates the number of test cases.
For each test case, the first line contains only one integer n (n≤8n≤8).
The second line contains n integers: a1,a2,⋯an(1≤ai≤10a1,a2,⋯an(1≤ai≤10).
The third line contains n integers: b1,b2,⋯,bn(1≤bi≤10)b1,b2,⋯,bn(1≤bi≤10).
Output
For each case, print a line “Case #x: p q”, where x is the case number (starting from 1) and p/q indicates the answer.
You should promise that p/q is irreducible.
Sample Input
1 2 1 1 2 3
Sample Output
Case #1: 1 2
Hint
Here are the details for the first sample: 2/(1+3/1) = 1/2
题目大意:
给你两个长度为n的数组a,b,请你计算出下图中表达式的结果的最简分数形式。
解题报告:
直接模拟分子和分母即可,带入一个样例来查看循环的次数,就的出来了需要循环n-2次。最后要求最简分式所以需要除以他俩的gcd就可以了。
AC代码:
#include<bits/stdc++.h>using namespace std;
int a[10],b[10];
int gcd(int a,int b) {while(a^=b^=a^=b%=a);return b;
}
int main()
{int t,iCase = 0;int n;cin>>t;while(t--) {scanf("%d",&n); for(int i = 1; i<=n; i++) {scanf("%d",&a[i]);}for(int i = 1; i<=n; i++) {scanf("%d",&b[i]);}int zi = b[n],mu=a[n],tmp;while(n >= 2) {zi +=a[n-1] * mu;tmp = mu;mu = zi;zi = tmp * b[n-1];n--;}int g = gcd(zi,mu);printf("Case #%d:",++iCase);printf(" %d %d\n",zi/g,mu/g);} return 0 ;
}