1 //连分数(分数类模板) uva6875
2 // 题意:告诉你连分数的定义。求连分数,并逆向表示出来
3 // 思路:直接上分数类模板。要注意ai可以小于0
4
5 #include <iostream>
6 #include <algorithm>
7 #include <cstring>
8 #include <cstdio>
9 #include <vector>
10 #include <cmath>
11 #include <map>
12 #include <queue>
13 using namespace std;
14 #define LL long long
15 typedef pair<int,int> pii;
16 const int inf = 0x3f3f3f3f;
17 const int MOD = 998244353;
18 const int N = 1020;
19 const int maxx = 200010;
20 #define clc(a,b) memset(a,b,sizeof(a))
21 const double eps = 0.025;
22 void fre() {freopen("in.txt","r",stdin);}
23 void freout() {freopen("out.txt","w",stdout);}
24 inline int read() {int x=0,f=1;char ch=getchar();while(ch>'9'||ch<'0') {if(ch=='-') f=-1; ch=getchar();}while(ch>='0'&&ch<='9') {x=x*10+ch-'0';ch=getchar();}return x*f;}
25
26 struct fr{
27 LL a,b;
28 fr(LL a_,LL b_){
29 LL g=__gcd(a_,b_);
30 a=a_/g;
31 b=b_/g;
32 }
33 fr operator + (const fr &x){
34 return fr(a*x.b+b*x.a,b*x.b);
35 }
36 fr operator -(const fr &x){
37 return fr(a*x.b-x.a*b,b*x.b);
38 }
39 fr operator *(const fr &x){
40 return fr(a*x.a,b*x.b);
41 }
42 fr operator /(const fr &x){
43 return fr(a*x.b,b*x.a);
44 }
45 void add(LL x){
46 a+=b*x;
47 }
48 LL split(){
49 LL r=a/b;
50 a%=b;
51 if(a<0){
52 r--;
53 a+=b;
54 }
55 return r;
56 }
57 void inv(){
58 std::swap(a,b);
59 if(b<0){
60 a=-a;
61 b=-b;
62 }
63 }
64 operator bool(){
65 return a;
66 }
67 };
68 LL in[11];
69 int n,m;
70 int main(){
71 int cas=1;
72 while(~scanf("%d%d",&n,&m),n&&m){
73 for(int i=1;i<=n;i++) scanf("%lld",&in[i]);
74 fr x(0,1);
75 for(int i=n;i>=1;i--) {
76 x.add(in[i]);
77 if(i!=1)x.inv();
78 }
79
80 for(int i=1;i<=m;i++) scanf("%lld",&in[i]);
81 fr y(0,1);
82 for(int i=m;i>=1;i--) {
83 y.add(in[i]);
84 if(i!=1) y.inv();
85 }
86
87 fr ad=x+y,sub=x-y,mul=x*y,div=x/y;
88 printf("Case %d:\n",cas++);
89
90 ad.inv();
91 while(ad){
92 ad.inv();
93 printf("%lld",ad.split());
94 if(ad){
95 printf(" ");
96 }
97 }
98 printf("\n");
99
100 sub.inv();
101 while(sub){
102 sub.inv();
103 printf("%lld",sub.split());
104 if(sub){
105 printf(" ");
106 }
107 }
108 printf("\n");
109
110 mul.inv();
111 while(mul){
112 mul.inv();
113 printf("%lld",mul.split());
114 if(mul){
115 printf(" ");
116 }
117 }
118 printf("\n");
119
120 div.inv();
121 while(div){
122 div.inv();
123 printf("%lld",div.split());
124 if(div){
125 printf(" ");
126 }
127 }
128 printf("\n");
129
130 }
131 return 0;
132 }