人工智能 java大数基本操作

hhqq · June 12, 2020 · 1 hits

试着整理我看 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 {
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.ZEROONETEN;
*/
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 的路径 就可以辣!

No Reply at the moment.
You need to Sign in before reply, if you don't have an account, please Sign up first.