/*****大数阶乘*****/
import java.io.*;
import java.math.*; // 包含大数类的包
import java.util.*; // 包含输入头的包
public class Main
{
public static void main(String args[])
{
Scanner cin = newScanner(System.in); // 输入必备句
int n = cin.nextInt(); // 给n赋值
BigInteger ans =BigInteger.ONE; // 定义一个大数赋初始值1
for(int i = 1; i <= n;++i)
ans =ans.multiply(BigInteger.valueOf(i)); //将参数 i 转换为制定的类型
System.out.println(ans); // 输出ans 并换行
}
}
/****头文件****/
import java.io.*;
import java.math.BigInteger; // 大数头文件
import java.math.BigDecimal; // 小数头儿文件
importjava.util.*; // 输入头文件
/****大数运算****/
特别提醒:/****** 这里的函数只对大数类操作******/
BigIntegera,b,c;
int d;
long e;
float f;
double g;
String s;
Scanner cin=newScanner(System.in);
a=cin.nextBigInteger();
b=cin.nextBigInteger();
d=cin.nextInt();
c=a.add(b); // 相加
c=a.subtract(b); // 相减
c=a.multiply(b); // 相乘
c=a.divide(b); // 相除取整
c=a.gcd(b); // 最大公约数
c=a.remainder(b); // 取余
c=a.mod(b); // a mod b
c=a.abs(); // a的绝对值
c=a.negate(); // a的相反数
c=a.pow(d); // a的b次幂 d为int型
c=a.max(b); // 取a,b中较大的
c=a.min(b); // 取a,b中较小的
d=a.compareTo(b); // 比较a与b的大小 d=-1小于 d=0等于 d=1大于 d为int型
a.equals(b); // 判断a与b是否相等 相等返回true 不相等返回false
d=a.intValue(); // 将大数a转换为 int 类型赋值给 d
e=a.longValue(); // 将大数a转换为 long 类型赋值给 e
f=a.floatValue(); // 将大数a转换为 float 类型赋值给 f
g=a.doubleValue(); // 将大数a转换为 double 类型赋值给 g
s=a.toString(); // 将大数a转换为 String 类型赋值给 s
a=BigInteger.valueOf(e); // 将 e 以大数形式赋值给大数 a e只能为long或int
a=newBigInteger(s, d); // 将s数字字符串以d进制赋值给大数a如果d=s字符数字的进制则等同于将数字字符串以大数形式赋值给大数a
/******大数基本常量******/
A=BigInteger.ONE 1
B=BigInteger.TEN 10
C=BigInteger.ZERO 0
/*******数据的读入******/
String s="12345"; // String 初始化
用Scanner类定义对象进行控制台读入,Scanner类在java.util.*包中
Scanner cin=new Scanner(System.in); // 读入 最好在程序结束后加上cin.close();清空
While()与if()用法:
Boolean a= true,b=false;
while(a) 等价于while(!b) 相当于 C++ 中的 while(1)
while(b) 等价于while(!a) 相当于 C++ 中的 while(0)
if(a) 等价于 if(!b)等价于 if(!false)等价于 if(true) 相当于C++中的 if(1)
if(b) 等价于 if(!a)等价于 if(!true) 等价于 if(false) 相当于C++中的 if(0)
while(n-->0) // 等价 while(n--) n减到0
EOF:用法
普通的数: while(cin.hasNextInt()) //等同于!=EOF,第一数一定要输入整形的
大数的一般是:while(cin.hasNextBigInteger()) //第一个数一定要输入大数
System.out.print(m.toString()); // m.toString() 将m转为String 类
while(n-->0) // 等价while(n--) n减到0
System.out.print(n); // 输出n
System.out.println(n);// 输出n并换行
System.out.println("Case#"+(t++)+":"+" "+c.toString(2)); //t为int c为大数 输出时字符与字符之间用+隔开 字符与字符之间有数据 在数据两边都加上+
换行符 System.out.print("\n");或 System.out.println();
输出空格 System.out.print(" ");
int a;
short b;
float c;
double d;
char e;
String s;
s=cin.nextLine(); // 读取一行文本,可带空格,回车结束读取
s=cin.next(); // 只读取一个单词,遇空格不再读取,遇回车结束
a=cin.nextInt();
b=cin.nextShort();
c=cin.nextFloat();
d=cin.nextDouble();
e=(char)System.in.read(); // 读取单个字符
/****特别注意****/
e=(char)System.in.read(); // 如果这样输入单个字符必需加上throws IOException
即:
/*** publicstatic void main(String[] args)throws IOException { }***/
还需注意的是:
char 和 String 对象的输入之前有其他数据输入需加上cin.nextLine();去掉回车
/****字符串数组****/
// char c[]={’a’,’b’,’c’}; 初始化定义
// charc[][]={{’a’,’b’},{’c’,’d’},{’e’,’f’}}; 初始化定义
String s; // s.length() 获取 s的长度
char c []; // c.length 获取 c的长度
将String转换到char[]一维字符数组中
方法一:
String s;
char c[];
s=cin.nextLine();
c = s.toCharArray(); // 将字符串对象中的字符转换为一个字符数组存入到c中
for(int i=0;i<c.length;i++)
System.out.print(c[i]); // 输出每个字符
方法二:
String s;
char c[];
c = new char[1000];
s=cin.nextLine();
for(int i=0;i<s.length();i++)
c[i]=s.charAt(i); // 返回s的第i个字符赋给 c[i]
for(int i=0;i<c.length;i++)
System.out.print(c[i]); // 输出每个字符
将String转换到char[][]二维字符数组中
Scanner cin=newScanner(System.in);
int n;
String s[]=newString[1000];
char c[][]=newchar[1000][1000];
n=cin.nextInt();
cin.nextLine(); // 去掉读入n后留下的换行符
for(int i=0;i<n;i++)
{
s[i]=cin.nextLine();
c[i]=s[i].toCharArray();
}
for(int i=0;i<n;i++)
{
System.out.println(c[i]);
System.out.println(s[i]);
}
/****整型数组****/
// int a[]={0,1,2,3}; 初始化定义
// int a[][]={{0,1},{2,3},{4,5}}; 初始化定义
数组定义
方法一:
// int a [] = new int [1000] ; 一维
// int a [][] = new int [1000][1000] ; 二维
方法二:
int n;
int a[][] ;
a = new int[1000][1000];
n=cin.nextInt(); // 输入n的值
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
a[i][j]=cin.nextInt(); // 给a[i][j]输入值
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
System.out.println(a[i][j]);
/*****进制转换*****/
String st = Integer.toString(num, base); //把int型num当10进制的数转成base进制数存入st中 (base <= 35).
int num = Integer.parseInt(st, base); //把st当做base进制,转成10进制的int
(parseInt有两个参数,第一个为要转的字符串,第二个为说明是什么进制).
BigInter m = new BigInteger(st, base); // st是字符串,base是st的进制.
总结:
BigIntegera;
int b;
Stringc;
a=cin.nextBigInteger(b); //以b进制读入一个大数赋值给a
c=a.toString(b); // 将大数a以b进制的方式赋给字符串c
a=newBigInteger(c, b); //把c 当做“b进制“转为十进制大数赋值给a
可以以任意(最好不要超过16)进制输入给大数赋值,但却只能将其转为10进制的大数,但却可以以字符串的形式输出大数的任意(最好不要超过16)进制的字符串
BigInteger a;
String c;
int b;
b=cin.nextInt();
a=cin.nextBigInteger(b); // 以b进制读入一个大数赋值给a
c=a.toString(b); // 将大数a以b进制的方式赋给字符串c
a=newBigInteger(c, b); // 将b进制字符串 转为十进制大数赋值给a System.out.println(a);