Java大数基本操作

试着整理我看Java的过程嗷

一直知道Java大数nb 一直口嗨学Java 一直没动
机缘巧合之下 看到我rank10058 想快乐rank四位数 又懒得开新题 干脆Java搞个1042(求N!)
先搜题解一行行搜看懂什么意思后交了
我看的题解是BigDecimal 但这题BigInteger就行
我后来也BigInteger过了
下面就放BigInteger的ac代码了=。=

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.math.BigInteger; 
import java.util.Scanner;
// 大数头文件和输入头文件

public class Main {
public static void main(String[] args) {
// 格式吧
Scanner sc = new Scanner(System.in);
// Scanner输入 这应该就是一句标准格式吧233
while(sc.hasNext()){
// while(有输入)
BigInteger n = sc.nextBigInteger(); // 格式
BigInteger m=new BigInteger("1"); // 格式
for(int i=2;i<=n.intValue();i++){
// 一个挺c的for
m = m.multiply(BigInteger.valueOf(i));
// 函数格式
}
System.out.println(m.toString());
// 转成字符串输出 不过不转也行
}
}
}

真·一行一注释了!
看懂了就 快乐交题 ac++; rank=9949;
然后去魔改代码 用在线编译跑 整自闭了 还是下了IDEA配了环境 啊要死
不过当时没选好题 没选水的
然后搜索关键词:hdoj 大数 Java
get到hdoj上的Java大数水题 BigInteger的有
1002 // 两个大数相加
1047 // 大数累加
1715 // 求斐波那契 直接大数相加
1316 // 求区间有几个斐波那契数 大数加完for一遍
1297 // 递推+大数加法
然后 BigInteger基本函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
BigInteger a, b;
a = BigInteger.valueOf(b); // a=b;
int c;
a = BigInteger.valueOf(c); // 类型转换
String s = "111";
a = BigInteger.valueOf(s); // 运行后a==111;
a = BigInteger("111"); // 赋值常量
a = sc.nextInteger(); // 赋值输入
a = a.add(b); // a+=b;
a = a.subtract(b); // a-=b;
a = a.multiply(b); // a*=b;
a = a.divide(b); // a/=b;
/* 函数里的值也是BigInteger
如果是具体数值 格式:a.add(new BigInteger("1"));
是前面变量 格式:a.add(BigInteger.valueOf(i));
特殊的 0 1 10 可以用BigInteger.ZERO\ONE\TEN;
*/
if(a.compareTo(b)>0) System.out.println(a>b);
if(a.compareTo(b)==0) System.out.println(a==b);
if(a.compareTo(b)<0) System.out.println(a<b);
remainder(); mod(); // 都是a%b
pow(); gcd(); // a^b 最大公约数
abs(); negate(); // 绝对值 相反数
max(); min();
// 定义数组格式
BigInteger array[]=new BigInteger[maxn];

然后BigDecimal

1
2
3
4
5
6
7
8
import java.math.BigDecimal; // 头文件
BigDecimal a, b;
a = sc.nextBigDecimal();
a = new BigDecimal(111);
a = new BigDecimal(b);
// 函数和BigInteger差不太多嗷 就有的语法有的小小区别
System.out.println(a.stripTrailingZeros().toPlainString());
// 这个是 输出时去除多余末尾0 好用!!

hdoj BigDecimal水题
首先BigInteger的用BigDecimal应该也能做?
1753 // 加法
2054 // 比较
1063 // a^b问题
然后说点题外话?
配完Java环境后我发现我的hexo命令不能用辽 Google后跟着教程是 在高级系统设置中的环境变量的PATH加了node_modules\.bin和nodejs的路径 就可以辣!