【CodeChef】Small factorials(BigInteger笔记)

You are asked to calculate factorials of some small positive integers.

Input

An integer t, 1<=t<=100, denoting the number of testcases, followed by t lines, each containing a single integer n, 1<=n<=100.

Output

For each integer n given at input, display a line with the value of n!



题解:题目一定是故意的,用了好多small,其实这道题用java里面的BigInteger类才能够过=。=

在这里积累一下:

  1. 头文件:import java.math.BigInteger;
  2. BigInteger 表示任意大的整数,原则上是,只要你的计算机的内存足够大,可以有无限位的
  3. 常用的值:BigInteger.ONE、BigInteger.TEN、BigInteger.ZERO
  4. 常用的函数:基本的加减乘除,取模,指数,左右移,与或非,异或等都有,用的时候查就试了。列举常见的如下表
    Valueof 赋初值,从别的类型转换过来
    add 加法
    subtract 减法
    multiply 乘法
    divide 除法
    remainder 余数
    pow 指数
    gcd 公约数
    shiftLeft 左移
    xor 异或
    intValue 转换成int
    equals(CompareTo) 判断相等

这道题的代码如下:

 1 import java.io.BufferedReader;
 2 import java.io.IOException;
 3 import java.io.InputStreamReader;
 4 import java.math.BigInteger;
 5
 6 public class Main {
 7     public static void main(String[] args)throws IOException{
 8         BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
 9         BigInteger[] fac = new BigInteger[101];
10         fac[0] = fac[1] = BigInteger.ONE;
11
12         for(int i = 2;i <= 100;i++)
13         {
14             BigInteger temp = BigInteger.valueOf(i);
15             fac[i] = fac[i-1].multiply(temp);
16         }
17
18         int t = Integer.parseInt(bf.readLine());
19         while(t-- > 0){
20             int num = Integer.parseInt(bf.readLine());
21             System.out.println(fac[num]);
22         }
23     }
24
25 }

【CodeChef】Small factorials(BigInteger笔记)

时间: 2024-10-17 10:26:01

【CodeChef】Small factorials(BigInteger笔记)的相关文章

算法笔记--java的BigInteger类

引包:import java.math.*; 可以使用构造方法:public BigInteger(String val),如: BigInteger a=new BigInteger("123456789123456789123456789"); 也可以直接读入,如: Scanner reader=new Scanner(System.in); BigInteger a=reader.nextBigInteger(); public BigInteger add(BigInteger

Effective Java阅读笔记——创建和销毁对象(一)

类通常提供一个公有的构造器方法,以此来让客户端可以获取自己(类)的一个实例.但是在创建对象时,应该首先考虑利用静态工厂方法代替构造器来返回一个实例.利用静态工厂方法而不是公有的构造器有几个优势: 静态工厂方法有(不同的)名字 构造器方法都有相同的名字,就是类的名字.区分不同构造器的方法是通过观察方法的签名确定的.方法的签名包括方法名,方法参数的类型,数目以及顺序,方法的返回类型不是方法签名的一部分.无法通过构造器方法名区分不同的构造器,只能通过参数的不同区分,这种情况下(特殊情况下有可能参数类型

Java编程思想总结笔记Chapter 2

本章介绍Java程序的基本组成部分,体会到Java中几乎一切都是对象. 第二章   一切都是对象 目录: 2.1 用引用操纵对象 2.2 必须由你创建所有对象 2.3 永远不需要销毁对象 2.4 创建新的数据类型:类 2.5 方法.参数和返回值 2.6 构建一个Java程序 2.7 你的第一个Java程序 2.8 注释和嵌入式文档 2.9 编码风格 2.1 用引用操纵对象 一切都看作对象,操纵的标识符实际上是对象的一个"引用",遥控器(引用)操纵电视机(对象),想调控电视,只需通过遥控

Java NIO读书笔记

简介 NIO的作用就是改进程序的性能.因为有时候程序的性能瓶颈不再是CPU,而是IO.这时候NIO就派上用场了.NIO的原理就是尽量利用系统底层的资源来提高效率,比如利用DMA硬件减小CPU负荷,利用操作系统的epoll机制避免线程频繁切换.通过底层资源提高系统的吞吐量. 缓冲区 缓冲区就是一个固定大小的一组数据.缓冲区有四个非常重要的属性:容量,限制,位置,标记.容量就是一个缓冲区最大能容量的元素数量,限制就是对容量进行逻辑上的限制,位置用于跟踪get或者put方法的位置,标记用于reset函

《Java解惑》读书笔记

 摘选自<Java解惑>一书,之前整理了部分,一直没看完,最近为了督促自己每天读点这本书,决定一天至少更新一个谜题的内容,欢迎讨论. 欢迎关注技术博客http://blog.sina.com.cn/u/1822488043 Java解惑读书笔记 谜题1:奇数性 取余操作的定义: ( a / b ) * b + ( a % b ) = a 其中(a/b)是java运算的结果,也就是a/b是一个整数,比如3/2=1. 所以当取余操作返回一个非零结果的时候,它与左操作数具有相同符号. 请测试你的

Java核心技术 卷1 读书笔记 (3 Java基本程序设计结构)

3.3 数据类型 Java是强类型语言,必须为每一个变量声明一种类型. 3.3.1 整型 Java 提供四种整型 int 4字节 short 2字节 long 8字节 byte 1字节 长整型(long)数值有一个后缀L(例如40000000000L),十六进制数值有一个前缀0x(例如0xCAFE),八进制数值有一个前缀0(例如010). 3.3.2 浮点型 Java提供两种浮点类型 float 4字节 double 8字节 float类型的数值有一个后缀F(例如3.42F),没有后缀F的浮点数

[读书笔记]java核心技术

ps:有时间好好整理下格式.从别的编辑器拷贝过来啥都没了. ~~~~~~~~~~~~~~· 2.java程序设计环境 JDK 开发java使用的软件: JRE 运行java使用的软件: SE 用于桌面或简单服务器应用的java平台--废弃 EE 用于复杂服务器应用的java平台--通用. ME 手机或其他小型设备的java平台--废弃 库源文件和文档: src.zip---包含了所有公共类库的源代码. JDK目录结构: bin 编译器和工具, demo演示, docs 类库文档,include

JavaSE基础笔记513

JavaSE笔记整理 java概述 1. 人机交互 人机交互:是指人与计算机之间使用某种对话语言,以一定的交互方式,为完成确定任务的人与计算机之间的信息交换过程. 交互方式 图形化界面:这种方式简单直观,使用者易于接受,容易上手操作. 命令行方式:需要有一个控制台,输入特定的指令,让计算机完成一些操作.较为麻烦,需要记住一些命令. 2. 键盘功能键介绍 这些按键要求的不是认识:而是常用. ′ Tab *** 缩格 ′ 空格 Enter ****** ′ Window ′ Shift *** (C

[Spring Data MongoDB]学习笔记--_id和类型映射

_id字段的映射: MongoDB要求所有的document都要有一个_id的字段. 如果我们在使用中没有传入_id字段,它会自己创建一个ObjectId. { "_id" : ObjectId("53e0ff0b0364cb4a98ce3bfd"), "_class" : "org.springframework.data.mongodb.examples.hello.domain.Person", "name&q