pku2819.java

来自「这是ACM 方面的资料 是PKU的 北京大学的出来的」· Java 代码 · 共 69 行

JAVA
69
字号
import java.util.*;
import java.math.BigDecimal;
import java.lang.String;

class Main
{
    public static void main(String args[])
    {
        Scanner cin = new Scanner(System.in);
        BigDecimal bd;
        String out;
        int l, i;
        long n;
        while (cin.hasNext())
        {
        	n = cin.nextLong();
        	if (n == 0)
        		break;
        	
        	if (n <= 2)
        	{
        		System.out.println("1.00000000000000");
        		continue;
        	}
        	
        	bd = Make(n);
        	
        	bd = power(bd, n - 2);
	       	out = bd.toString().substring(0, 16);
        	System.out.println(out);
        }
    }
    
    static BigDecimal power(BigDecimal bd, long n)
    {
    	BigDecimal ans;
    	if (n == 0)
    	{
    		return BigDecimal.ONE;
    	}
    	ans = power(bd, n / 2);
    	ans = ans.multiply(ans);
    	if (n % 2 == 1)
    	{
    		ans = ans.multiply(bd);
    	}
    	if (ans.toString().length() > 50)
    	{
    		ans = new BigDecimal(ans.toString().substring(0, 50));
    	}
    	return ans;
    }
    
    static BigDecimal Make(long N)
    {
    	String s = "";
    	long v = N - 1;
    	int i;
    	for (i = 0; i < 50; i++)
    	{
    		v = (v % N) * 10;
    		s += v / N;
    	}
    	s = "0." + s;
    	return new BigDecimal(s);
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?