The second line contains n integers: a1,a2,⋯an(1≤ai≤10 ).
The third line contains n integers: b1,b2,⋯,bn(1≤bi≤10) .
C语言课后习题
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
new Task().solve(); ;
}
}
class Task{
Scanner in = new Scanner(new BufferedInputStream(System.in)) ;
PrintWriter out = new PrintWriter(System.out) ;
void solve(){
int t = in.nextInt() ;
for(int ca = 1 ; ca <= t ; ca++){
int n = in.nextInt() ;
BigInteger[] a = new BigInteger[n+1] ;
BigInteger[] b = new BigInteger[n+1] ;
for(int i = 1 ; i <= n ; i++) a[i] = in.nextBigInteger() ;
for(int i = 1 ; i <= n ; i++) b[i] = in.nextBigInteger() ;
BigF tm = new BigF(b[n] , a[n]) ;
for(int i = n-1 ; i >= 1 ; i--){
tm = new BigF(a[i]).add(tm) ;
tm = new BigF(b[i] , tm) ;
}
out.println("Case #" + ca + ": " + tm.zi + " " + tm.mu) ;
}
out.flush() ;
}
class BigF{
BigInteger mu , zi ;
BigF(BigInteger zi , BigInteger mu){
BigInteger g = mu.gcd(zi) ;
mu = mu.divide(g) ;
zi = zi.divide(g) ;
this.mu = mu ;
this.zi = zi ;
}
BigF(BigInteger zi , BigF mu){
this.mu = mu.zi ;
this.zi = zi.multiply(mu.mu) ;
BigInteger g = this.mu.gcd(this.zi) ;
this.mu = this.mu.divide(g) ;
this.zi = this.zi.divide(g) ;
}
BigF(BigInteger zi){
this.zi = zi ;
this.mu = BigInteger.ONE ;
}
BigF(){
}
BigF add(BigF o){
BigF res = new BigF() ;
res.mu = this.mu.multiply(o.mu) ;
res.zi = this.zi.multiply(o.mu) .add( o.zi.multiply(this.mu) ) ;
BigInteger g = res.mu.gcd(res.zi) ;
res.mu = res.mu.divide(g) ;
res.zi = res.zi.divide(g) ;
return res ;
}
}
}
class InputReader {
public BufferedReader reader;
public StringTokenizer tokenizer;
public InputReader(InputStream stream) {
reader = new BufferedReader(new InputStreamReader(stream), 32768);
tokenizer = new StringTokenizer("");
}
private void eat(String s) {
tokenizer = new StringTokenizer(s);
}
public String nextLine() {
try {
return reader.readLine();
} catch (Exception e) {
return null;
}
}
public boolean hasNext() {
while (!tokenizer.hasMoreTokens()) {
String s = nextLine();
if (s == null)
return false;
eat(s);
}
return true;
}
public String next() {
hasNext();
return tokenizer.nextToken();
}
public int nextInt() {
return Integer.parseInt(next());
}
public long nextLong() {
return Long.parseLong(next());
}
public double nextDouble() {
return Double.parseDouble(next());
}
public BigInteger nextBigInteger() {
return new BigInteger(next());
}
}