题目连接:题目
求公式结果,数据量比较小,递归一下就行了,和某年的蓝桥杯一个题一样
#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;
}