2018-2019 ACM-ICPC, Asia Jiaozuo Regional Contest(E - Resistors in Parallel) 大数+规律

大数板子有错, 被逼无奈写了java

import java.io.*;
import java.math.BigInteger;
import java.util.*;
public class Main//注意在oj提交是要用Main
{
    
    int prime(int x){
        for(int i = 2 ; i * i <= x ; ++ i){
		    if(x % i == 0) return 0;
	    }
	    return 1;
    }
    public static void main(String[] args) 
    {
           int p[] = new int[150];
            int cnt = 0;
 
           for(int i = 5 ; ; ++ i){
                int flag = 0;
                for(int j = 2 ; j * j <= i ; ++ j){
		            if(i % j == 0){flag = 1; break;}
	            }
                if(flag != 1){
                    p[++cnt] = i;
                    if(cnt == 100) break;
                }
            }
        Scanner in=new Scanner (System.in);
        int n;
        n = in.nextInt();
        for(int pp = 1 ; pp <= n ; pp ++)
        {
            BigInteger x;
            x = in.nextBigInteger();
            if(x.compareTo(BigInteger.valueOf(1)) == 0){
                    System.out.print("1");
                    System.out.print("/");
                    System.out.print("1");
                    System.out.println("");
                    continue;
            }
            else if(x.compareTo(BigInteger.valueOf(2)) == 0){
                    System.out.print("2");
                    System.out.print("/");
                    System.out.print("3");
                    System.out.println("");continue;
            }
            else if(x.compareTo(BigInteger.valueOf(3)) == 0){
                    System.out.print("2");
                    System.out.print("/");
                    System.out.print("3");
                    System.out.println("");continue;
            }
            else if(x.compareTo(BigInteger.valueOf(4)) == 0){
                    System.out.print("2");
                    System.out.print("/");
                    System.out.print("3");
                    System.out.println("");continue;
            }
            else if(x.compareTo(BigInteger.valueOf(5)) == 0){
                    System.out.print("2");
                    System.out.print("/");
                    System.out.print("3");
                    System.out.println("");continue;
            }
            BigInteger a=BigInteger.valueOf(1);
            BigInteger b=BigInteger.valueOf(2);
            BigInteger c=BigInteger.valueOf(6);
            BigInteger y=BigInteger.valueOf(1);
            for(int i = 1 ; ; ++ i){
                BigInteger temp = c.multiply(BigInteger.valueOf(p[i]));
                if(temp.compareTo(x) == 1 ){
                    y = a.gcd(b);
                    a = a.divide(y); b = b.divide(y);
                    System.out.print(a);
                    System.out.print("/");
                    System.out.print(b);
                    System.out.println("");
                    break;
                }
                
                c=c.multiply(BigInteger.valueOf(p[i]));
 
                a=a.multiply(BigInteger.valueOf(p[i])); b=b.multiply(BigInteger.valueOf(p[i]+1));
 
                //System.out.println(a);
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值