这次比赛的数学题真心是有点多,所以确实成了一个手速场的比赛

5题可以从铁排到银确实还是有点恐怖


这个题的意思:

求一个连分数的值:写成循环或者递归或者迭代的方式是最省时间和精力的

(这个题的n实在太小了,考察不了什么。如果n大一点,就不会有去暴力推公式的了,考察度能强那么一点)


#include<bits/stdc++.h>
using namespace std;

#define LL __int64
const int maxn=50;
LL fenzi,fenmu,newfenzi,newfenmu;
LL a[maxn],b[maxn];
int t,n;

LL gcd(LL x,LL y){
	return x%y==0?y:gcd(y,x%y);
}

int main(){
	//freopen("input.txt","r",stdin);
	scanf("%d",&t);
	for(int Case=1;Case<=t;Case++){
		scanf("%d",&n);
		for(int i=1;i<=n;i++) scanf("%I64d",&a[i]);
		for(int i=1;i<=n;i++) scanf("%I64d",&b[i]);
		fenzi=b[n]/gcd(b[n],a[n]);
		fenmu=a[n]/gcd(b[n],a[n]);
		//printf("%I64d %I64d\n",fenzi,fenmu);
		for(int i=n-1;i>=1;i--){
			newfenzi=b[i]*fenmu;
			newfenmu=a[i]*fenmu+fenzi;
			fenzi=newfenzi/gcd(newfenzi,newfenmu);
			fenmu=newfenmu/gcd(newfenzi,newfenmu);
			//printf("%I64d %I64d\n",newfenzi,newfenmu);
			//printf("%I64d %I64d\n",fenzi,fenmu);
		}
		printf("Case #%d: %I64d %I64d\n",Case,fenzi,fenmu);
	}
	return 0;
}