[Java大数+输入输出优化] hdu 5047 Sawtooth

本文介绍了一种使用n个“M”形图形将平面进行分割的方法,并给出了一种计算分割后平面部分数量的公式。通过数学计算得出分割后的平面部分数量与n的关系,并提供了Java实现代码示例。

题意:

用n个“M”形能把平面分成几个部分

思路:

ans=8*n*n-7*n+1

根据范围,会出现大数

然后卡时间,用Java写大数需要输入输出优化

就当存了个模板了

代码:

import java.io.*;  
import java.math.*;  
import java.util.*;  
public class Main 
{
    public static void main(String[] args)throws IOException {
		Main ma=new Main();
		ma.solve();
	}
    public void solve()throws IOException
	{
		StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));      
		PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));  
		
		st.nextToken();  //输入前记得加
		int i;
		int TT=(int)st.nval;
        for(i=1;i<=TT;i++)
        {
        	//8*n*n-7*n+1
        	st.nextToken();  //这里也是
        	long x=(long)st.nval;
        	BigInteger a,ans;
        	a = BigInteger.valueOf(x);
        	ans=a.multiply(a);
        	ans=ans.multiply(BigInteger.valueOf(8));
        	ans=ans.add(BigInteger.ONE);
        	a=a.multiply(BigInteger.valueOf(7));
        	ans=ans.subtract(a);
        	out.println("Case #"+ i +": "+ans);
        }
        out.close(); //所有输出结束
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值