Java高精度学习第二弹——求N!

  继续学习Java高精度,今天写的是求N!。

  首先附上源代码:

  

import java.util.Scanner;
import java.math.BigInteger;

public class Main
{
    public static void main(String []args)
    {
        Scanner cin = new Scanner(System.in);
        BigInteger a,n,i;
        while(cin.hasNext())
        {
            a = cin.nextBigInteger();
            n = BigInteger.ONE;
            for(i=BigInteger.ONE; i.compareTo(a)<=0;i=i.add(BigInteger.ONE))
                n = n.multiply(i);
            System.out.println(n);
        }
    }
}
    

  有几个需要注意的地方:

  1.BigInteger.ONE 这个是用来获取BigInteger的1值的,同样的还有,BigInteger.TEN(获取10),BigInteger.ZERO(获取0)。

  2.compareTo。这个函数可以很简单的去理解。例如上面的 i.compareTo(a) 既是返回 i - a 的值(如果是字符串的话就类似C里面的strcmp了)。

时间: 2024-10-21 17:28:22

Java高精度学习第二弹——求N!的相关文章

Java高精度学习第一弹

为了快速解决高精度问题,总算是要来接触java了,算上这学期要开java的课了,好好学习吧! 拿来练手的是hdu的1002,高精度加法. 1 import java.util.*; 2 import java.math.*; 3 import java.io.*; 4 5 public class Main { 6 public static void main(String []args) { 7 8 Scanner in = new Scanner(System.in); 9 int n =

10道java经典算法题,每一题都能提升你的java水平!第二弹!

10道java经典算法! 持续更新java小知识,跪求关注,祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早生贵子,从不掉发! [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去   掉不满足条件的排列. public class Wanshu { public static void main(String[] args) { int i=0; int j=

No_16_0221 Java基础学习第二天

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.02.21 lutianfei none 第二章 Java基础语法(一)关键字(二)标识符1.常见命名规则(三)注释(四)常量原码.反码.补码有符号数据表示法(五)变量数据类型的默认转换数据类型的强制转换面试题1面试题2练习题1 byte b = 300:练习题2,写出下列程序结果 第二章 Java基础语法 本章内容 关键字 标识符 注释 常量.进制和进制转换 变量 数据类型和类型转换 运算符 语句 (一)关键字 关键

Java基础学习第二天——基础数据类型介绍

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.02.21 lutianfei none 第二章 Java基础语法 本章内容 关键字 标识符 注释 常量.进制和进制转换 变量 数据类型和类型转换 运算符 语句 (一)关键字 关键字概述 被Java语言赋予特定含义的单词 关键字特点 组成关键字的字母全部小写 关键字注意事项 goto和const作为保留字存在,目前并不使用(在JDK的新版本中可能提升为关键字) (二)标识符 标识符概述 就是给类,接口,方法,变量等起名

Java大数练习第二弹

hdu1250 水题 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1250 import java.util.*; import java.math.BigInteger; public class Main{ public static void main(String[] args){ int a; Scanner in=new Scanner(System.in); while(in.hasNext()){ a=in.nextInt();

Java基础学习第二天

================每日必读==================== 写代码: 1.明确需求.我需要实现什么需求? 2.分析思路.我需要怎么实现需求? 3.确定步骤.我的每一部分思路需要使用到哪些语句,方法,对象? 4.代码实现.使用代码表现我的思路. ps:每天看一遍,每天向前进... ================每日必读==================== package code.day01; public class Demo {    public static v

我的Java开发学习之旅------&gt;求字符串中出现次数最多的字符串以及出现的次数

金山公司面试题:一个字符串中可能包含a~z中的多个字符,如有重复,如String data="aavzcadfdsfsdhshgWasdfasdf",求出现次数最多的那个字母及次数,如有多个重复的则都求出. 此题的解题思路如下: 引入TreeSet:通过集合快速找到所有出现过的字符串 引入ArrayList:为了快速排序,再通过StringBuffer生成排序后的字符串 通过String的indexOf方法和lastIndexOf方法来计算每个字符串出现的次数最大值 使用HashMap

Java进阶学习第二十二天——上传与下载

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.06.05 lutianfei none Servlet规范中 servlet有初始化参数 Filter有初始化参数 Listener没有初始化参数,要使用,在开发中一般使用<context-param> servletContext的初始化参数. 文件上传 问题:什么是文件上传?为什么使用文件上传? 就是将客户端资源,通过网络传递到服务器端. 就是因为数据比较大,我们必须通过文件上传才可以完成将数据保存到服务器端操

No_16_0325 Java基础学习第二十四天—多线程学习总结

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.03.25 lutianfei none 第十章 多线程 多线程概述 什么是进程? 进程:就是正在运行的程序. 进程是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内存空间和系统资源. 多进程有什么意义呢? 可以在一个时间段内执行多个任务. 可以提高CPU的使用率. 什么是线程呢? 在同一个进程内又可以执行多个任务,而这每一个任务我就可以看出是一个线程. 线程:是程序的执行单元,执行路径.是程序使用CPU的最