Java 大数类

大数阶乘

例如:5000!

代码如下:

import java.io.*;
import java.math.BigInteger;
import java.util.*;

public class Main
{
	public static void main(String args[])
	{
		Scanner cin = new Scanner(System.in);	
		int n = cin.nextInt();
		BigInteger ans = BigInteger.ONE;
		for(int i = 1; i <= n; ++i)
			ans = ans.multiply(BigInteger.valueOf(i));
		System.out.println(ans);
	}
}

棋盘覆盖

在一个2

k×2k(1<=k<=100)的棋盘中恰有一方格被覆盖,如图1(k=2时),现用一缺角的2×2方格(图2为其中缺右下角的一个),去覆盖2k×2k未被覆盖过的方格,求需要类似图2方格总的个数s。如k=1时,s=1;k=2时,s=5                                                                                

          

输入 第一行m表示有m组测试数据; 每一组测试数据的第一行有一个整数数k; 输出 输出所需个数s;                                                    

代码如下:

import java.math.BigInteger;
import java.util.*;
import java.io.*;

public class Main
{
	public static void main(String args[])
	{
		Scanner in = new Scanner(System.in);
		int test = in.nextInt();
		while(test-- > 0)
		{
			int n;
			n = in.nextInt();
			BigInteger a = new BigInteger("4");
			for(int i = 1; i < n; ++i)
				a = a.multiply(BigInteger.valueOf(4));
			System.out.println(a.subtract(BigInteger.valueOf(1)).divide(BigInteger.valueOf(3)));
		}
	}
}

比较大小

给你两个很大的数,你能不能判断出他们两个数的大小呢?

比如123456789123456789要大于-123456

输入

每组测试数据占一行,输入两个不超过1000位的10进制整数a,b

数据保证输入的a,b没有前缀的0。

如果输入0 0表示输入结束。测试数据组数不超过10组

输出

如果a>b则输出“a>b”,如果a<b则输出“a<b”,如果相等则输出“a==b”。

代码如下:

import java.io.*;
import java.math.BigInteger;
import java.util.*;

public class Main
{
	public static void main(String args[])
	{
		Scanner cin = new Scanner(System.in);	
		while(cin.hasNext())
		{
			BigInteger a = cin.nextBigInteger();
			BigInteger b = cin.nextBigInteger();
			if(a.equals(BigInteger.ZERO) && b.equals(BigInteger.ZERO))
				break;
			int flag = a.compareTo(b);
			if(flag == -1)
				System.out.println("a<b");
			else if(flag == 0)
				System.out.println("a==b");
			else
				System.out.println("a>b");
		}
	}
}

大数加法

代码如下:

import java.math.BigInteger;
import java.util.*;
import java.io.*;

public class Main
{
	public static void main(String args[])
	{
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();		
		for(int i = 1; i <= n; ++i)
		{
			BigInteger a = in.nextBigInteger();
			BigInteger b = in.nextBigInteger();
			BigInteger ans = a.add(b);
			System.out.println("Case " + i + ":");
			System.out.println(a + " + " + b + " = " +ans);
		}
	}
}

递推求值

数列A满足An = An-1 + An-2 + An-3, n >= 3

编写程序,给定A0, A1 和 A2, 计算A99

输入

输入包含多行数据

每行数据包含3个整数A0, A1, A2 (0 <= A0, A1, A2 <= 100000000)

数据以EOF结束

输出

对于输入的每一行输出A99的值

代码如下:

import java.io.*;
import java.math.BigInteger;
import java.util.*;

public class Main
{
	public static void main(String args[])
	{
		Scanner cin = new Scanner(System.in);	
		BigInteger a[] = new BigInteger[100];
		while(cin.hasNext())
		{
			for(int i = 0; i <= 2; ++i)
				a[i] = cin.nextBigInteger();
			for(int i = 3; i <= 99; ++i)
				a[i] = a[i - 1].add(a[i - 2]).add(a[i - 3]);
			System.out.println(a[99]);
		}
	}
}

高精度幂

对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。 
现在要你解决的问题是:对一个实数R( 0.0< R < 99.999 ),要求写程序精确计算 R n次方(Rn),其中n是整数并且 0 < =n<= 25

输入

输入有多行,每行有两个数R和n,空格分开。R的数字位数不超过10位。

输出

对于每组输入,要求输出一行,该行包含精确的 R 的 n 次方。输出需要去掉前导的 0 后不要的 0 。如果输出是整数,不要输出小数点。

代码如下:

import java.io.*;
import java.math.BigDecimal;
import java.util.*;

public class Main
{
	public static void main(String args[])
	{
		Scanner cin = new Scanner(System.in);	
		while(cin.hasNext())
		{
			BigDecimal ans = cin.nextBigDecimal();
			int n = cin.nextInt();
			String res = ans.pow(n).stripTrailingZeros().toPlainString(); //整数去掉小数点和后面的0
			if(res.startsWith("0")) //去掉前导0
			{
				res = res.substring(1);
			}
			System.out.println(res);
		}
	}
}






Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值