【HDU - 5912】Fraction (模拟)
題干:
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 3Sample Output
Case #1: 1 2Hint
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 ; }?
總結
以上是生活随笔為你收集整理的【HDU - 5912】Fraction (模拟)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【HDU - 2717】【POJ - 3
- 下一篇: nilaunch.exe - nilau