JAVA大数模板

package AAA;
import java.math.*;
import java.util.*;

public class D {
	public static void main(String[] args) {
		Scanner  in = new Scanner(System.in);		
		BigInteger mod = BigInteger.valueOf(1);		
		for(int i = 1; i <= 100; i++)//乘一百次
			mod = mod.multiply(BigInteger.valueOf(10));		
		while(in.hasNext()){			 //当有数字输入的时候
		int n = in.nextInt();			
		BigInteger ans = BigInteger.valueOf(1);			
		BigInteger ret = BigInteger.valueOf(1);			
		for(int i = 1; i<= n; i++){								
		ans = ans.multiply(BigInteger.valueOf(i));				
		ans = ans.multiply(BigInteger.valueOf(i+1));				
		//ans = ans.divide(BigInteger.valueOf(i));				
		//ans = ans.divide(BigInteger.valueOf(i+1));				
		ret = ret.add(ans);							
		}
		in.close();
//		cin.close();
		ret = ret.mod(mod);			
		System.out.println(ret);					
		}
		BigInteger a[] = new BigInteger[1005];	
		a[1] = a[2] = BigInteger.valueOf(5);
        for (int i =3; i< 1005; i++){
            a[i] = a[i-1].add(a[i-2]);
        }
        //String s="-123459999999999999999999";
        //BigInteger c=new BigInteger(s,10);
              //把字符串转换成10进制的大数;
		//toString()将BigDecimal对象的数值转换成字符串。 
		//Scanner cin = new Scanner(System.in); //定义一个输入
		//BigInteger num2=cin.nextBigInteger();
		//BigInteger num3=cin.nextBigInteger();
		//System.out.println(num2.add(num3));
		//int T=cin.nextInt();	//输入整数
		//System.out.println(T); //输出
//		BigInteger a, b;
//		b=BigInteger.valueOf(T); //直接赋值给大数字
//		a=BigInteger.valueOf(3);
//		System.out.println(a);	//大数字可以直接输出
//		System.out.println(a.add(b));//大整数加法
//		System.out.println(a.subtract(b));//大整数减法
//		System.out.println(a.multiply(b));//大整数乘法
//		System.out.println(a.divide(b));//大整数除法,取整
//除法(在divide的时候就设置好要精确的小数位数和舍入模式)
//		System.out.println(num1.divide(num2,10,BigDecimal.ROUND_HALF_DOWN));
//		System.out.println(a.remainder(b));//大整数取模
//		System.out.println(a.abs());//对大整数a取绝对
/*		System.out.println(num1.gcd(num2));
        //取绝对值
        System.out.println(num1.abs());
        //取反
        System.out.println(num1.negate());
        //取最大值
        System.out.println(num1.max(num2));	//取最大值
        System.out.println(num1.min(num2)); *///取最小值
//		int x=2;
//		System.out.println(a.pow(x));//大整数a的x次幂
//		int y = 8;
//		System.out.println(a.toString(y));//返回大整数a的p进制用字符串表现的形式
//		System.out.println(a.toString());//返回大整数a的十进制用字符串表现的形式
//		//大整数之间的比较
//		if(a.compareTo(b)==0)System.out.println("a==b");
//		else if (a.compareTo(b)>0) System.out.println("a>b");
//		else if (a.compareTo(b)<0) System.out.println("a<b");
//		BigDecimal c,d;
//		c=BigDecimal.valueOf(55.55);
//		d=BigDecimal.valueOf(3.789);
//		System.out.println(c.add(d));//浮点数相加
//		System.out.println(c.subtract(d));//浮点数相减
//		System.out.println(c.multiply(d));//浮点数相乘
	}
}

P1005

注意包名/类名/RE一定是未初始化

2 3
1 2 3
3 4 2
82
package AAA; //提交时注意删除包名
import java.math.*;
import java.util.*;

public class Main{ //提交时的class为Main
	public static void main(String[] args){
		Scanner  in = new Scanner(System.in);		
		int n = in.nextInt(),m = in.nextInt();
		BigInteger a[][] = new BigInteger[105][105];
		for(int i=0;i<=n+1;i++)
			for(int j=0;j<=m+1;j++)
					a[i][j]=BigInteger.valueOf(0); //初始化数组后才可以进行使用
		
		for(int i=1;i<=n;i++) { //注意初始化所有元素
			for(int j=1;j<=m;j++) {
				int t1=in.nextInt();
				a[i][j]=BigInteger.valueOf(t1);
			}
		}
		
		BigInteger dp[][] = new BigInteger[105][105];
		
		BigInteger Sum1 = BigInteger.valueOf(0);
		
		BigInteger res1,res2;
		for(int i=1;i<=n;i++) {
			
			for(int ii=0;ii<=100;ii++)//初始化的元素注意是否完全包含在里面了
				for(int jj=0;jj<=100;jj++)
						dp[ii][jj]=BigInteger.valueOf(0);
			
			BigInteger max1 = BigInteger.valueOf(0);
			BigInteger is = BigInteger.valueOf(1);
			BigInteger num = BigInteger.valueOf(2);
			for(int j=1;j<=m;j++) {
				is=is.multiply(num);
				for(int k=0;k<=j;k++) { //k从0开始是因为有可能这一行一个都没有取
					BigInteger new1 = a[i][k].multiply(is); 
					BigInteger new2 = a[i][m-(j-k)+1].multiply(is);
					if(k==0){					
					res1 = BigInteger.valueOf(0);
					}else{
					res1 = dp[j-1][k-1].add(new1);
					}
					res2 = dp[j-1][k].add(new2);
					dp[j][k]=res1.max(res2);
					max1=max1.max(dp[j][k]);
				}
			}
			Sum1=Sum1.add(max1);
		}
		System.out.println(Sum1);
		return ;
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值