//问题描述
// 给定n和len,输出n!末尾len位。
//输入格式
// 一行两个正整数n和len。
//输出格式
// 一行一个字符串,表示答案。长度不足用前置零补全。
//样例输入
//6 5
//样例输出
//00720
//数据规模和约定
// n<=30, len<=10。
这里要注意的就是当计算出来的数字长度,小于len时前面要补0,在就是阶乘的计算要用到biginteger
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int len = in.nextInt();
if (n <= 30 && len <= 10) {
//由于int和long都不行,所以我使用了biginteger
BigInteger num = new BigInteger("1");//赋初值为1
for (int i = 2; i <= n; i++) {
String a = i + "";//big只接收字符串类型的变量
BigInteger t = new BigInteger(a);
num = num.multiply(t);
}
//把big转换为字符串型,
String string = num + "";
//分两个情况,一个是大于len,一个是小于len
if (string.length() >= len) {
//大于len就直接输出后面len位就可以了
for (int i = 0, t = string.length() - len; i < len; i++, t++) {
System.out.print(string.charAt(t));
}
} else {//小于len的情况
//只要你小于len就一定为有填充0的情况,这个for用来就来填充0
for (int i = len - string.length(); i > 0; i--)
System.out.print("0");
//输出完0,在输出整个数字
for (int i = 0; i < string.length(); i++)
System.out.print(string.charAt(i));
}
}
}
}
第一次写这个博客,写的不好还请多担待啊。
萌新一个