黑马程序员技术交流社区
标题:
关于BigInteger的小练习,求技术分。
[打印本页]
作者:
编程学徙
时间:
2014-6-16 13:52
标题:
关于BigInteger的小练习,求技术分。
代码:
import java.math.BigInteger;
import java.util.*;
/**
此程序用以输出1000的阶乘,并统计其尾部0的个数,这是对BigInteger类的一个综合练习。
步骤:
1、先求出1000的阶乘;
2、用结果自身除以10,jishu自增1;
3、判断结果除以10之后的余数是否为0,如果是,返回第2步,如果不是,执行第4步;
4、输出计数结果。
*/
public class BigDemo
{
public static void main(String[] args)
{
int i;
BigInteger result = new BigInteger("1"); //1000!是一个大数据,需要用BigInteger来保存;
for(i=1;i<=1000;i++)
{
result = result.multiply(BigInteger.valueOf(i));
//a.multiply(b):大数据的乘法表示方法;
//int型变量要参数大数据运算,要用BigInteger.valueof()来做转换。
}
System.out.println("1000! = "+result);
int jishu = 0; //jishu用以统计0的个数。
BigInteger ten = new BigInteger("10");
BigInteger zero = new BigInteger("0");
BigInteger z = new BigInteger("0"); //z的作用是用来存储result除以10之后的余数。
do
{
result = result.divide(ten); //a.divide(b):大数据的除法表示方法。
jishu++;
z = result.mod(ten);
}while(z.compareTo(zero) == 0); //a.compareTo(b):比较两个大数据的大小,如果相等,返回值为0。
System.out.println("0的个数为:"+jishu);
}
}
复制代码
运行结果:
BigInteger.jpg
(88.57 KB, 下载次数: 35)
下载附件
2014-6-16 13:52 上传
作者:
闪耀.Q
时间:
2014-6-16 14:10
来学习了
作者:
编程学徙
时间:
2014-6-17 10:32
没什么人关注啊……自顶。。。
写了一段求彩票概率的小代码……
import java.math.*;
import java.util.*;
/**
本程序用以计算m选n的概率。其公式为:(m*(m-1)*(m-2)...*(m-(n-1))/(1*2*3..*n);
*/
public class GaiLv
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
BigInteger result = new BigInteger("1");
int m,n;
System.out.println("请输入m的值:");
m = in.nextInt();
System.out.println("请输入n的值:");
n = in.nextInt();
int k;
for(k=1;k<=n;k++)
{
result = result.multiply(BigInteger.valueOf(m-k+1));
result = result.divide(BigInteger.valueOf(k));
}
System.out.println(m+"选"+n+"的概率为:"+result+"分之1");
}
}
复制代码
作者:
闪耀.Q
时间:
2014-6-17 11:45
我做的基础测试就有这道题。
下面是我做的
import java.math.*;
class Test9
{
public static void main(String[] args)
{
BigInteger bi = calculate();
String str = transform(bi);
result(str);
}
//先计算1000! long和int类型范围太小,用BigInteger解决大数问题 用到了BigInteger的乘法方法multiply();
public static BigInteger calculate()
{
BigInteger res = new BigInteger("1");
for(int i=2;i<=1000;i++)
{
res = res.multiply(new BigInteger(String.valueOf(i)));
}
return res;
}
//将BigInteger类型的大数转换成String类型
public static String transform(BigInteger bi)
{
String str =bi.toString();
return str;
}
//计算字符串中有多少‘0’ 用到了String.charAt()方法
public static void result(String str)
{
int count = 0;
for(int i=0;i<str.length();i++)
{
if(str.charAt(i)=='0')
count++;
}
System.out.println("结果中共有"+count+"个0");
}
}
复制代码
作者:
奋斗2014
时间:
2014-6-17 12:46
看看,顺便灌灌水!O(∩_∩)O
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2