HDU 5912 Fraction (2016-ccpc-长春)
题目连接:题目
求公式结果,数据量比较小,递归一下就行了,和某年的蓝桥杯一个题一样
#include<cmath> #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int maxn = 10; int n; int a[maxn],b[maxn]; int gcd(int x,int y){ if(x==0) return y; else return gcd(y%x,x); } void dfs(int &x,int &y,int t){ if(t==n){ x=a[t-1]*a[t]+b[t]; y=a[t]; }else{ dfs(x,y,t+1); int q,p; q=a[t-1]*x+b[t]*y; p=x; //int k=gcd(p,q); x=q; y=p; } } int main() { //freopen("t.txt","r",stdin); int t; scanf("%d",&t); for(int p=1;p<=t;p++){ printf("Case #%d: ",p); scanf("%d",&n); a[0]=0; b[0]=1; for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } for(int i=1;i<=n;i++){ scanf("%d",&b[i]); } int x,y; dfs(x,y,1); int k=gcd(x,y); printf("%d %d\n",x/k,y/k); } return 0; }