蓝桥杯 算法训练VIP——阶乘末尾

//问题描述
//  给定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));
    
   }
  }
 }
}

第一次写这个博客,写的不好还请多担待啊。
萌新一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值