【java_蓝桥杯算法训练 】试题 算法训练 阶乘

简介: 一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积。阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中;而35!就更大了,它已经无法存放在一个浮点型变量中。因此,当n比较大时,去计算n!是非常困难的。幸运的是,在本题中,我们的任务不是去计算n!,而是去计算n!最右边的那个非0的数字是多少。例如,5! = 1*2*3*4*5 = 120,因此5!最右边的那个非0的数字是2。再如:7! = 5040,因此7!最右边的那个非0的数字是4。请编写一个程序,输入一个整数n(n<=100),然后输出n! 最右边的那个非0的数字是多少。  输入格式:输入只有一个整数n

 试题 算法训练 阶乘

资源限制

时间限制:1.0s   内存限制:512.0MB


问题描述

  一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积。阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中;而35!就更大了,它已经无法存放在一个浮点型变量中。因此,当n比较大时,去计算n!是非常困难的。幸运的是,在本题中,我们的任务不是去计算n!,而是去计算n!最右边的那个非0的数字是多少。例如,5! = 1*2*3*4*5 = 120,因此5!最右边的那个非0的数字是2。再如:7! = 5040,因此7!最右边的那个非0的数字是4。请编写一个程序,输入一个整数n(n<=100),然后输出n! 最右边的那个非0的数字是多少。

  输入格式:输入只有一个整数n。

  输出格式:输出只有一个整数,即n! 最右边的那个非0的数字。


输入输出样例

样例输入

6

样例输出

2

分析:

题目的要求是计算计算阶乘的结果从右到左数不是0的数,直接输出就可以了,但是大家都应该知道阶乘值太大了,int、long根本就存储不下,这是我们就应该想到一个对象BigInteger来完成阶乘的计算,计算完毕后赋给一个字符串,通过for循环倒叙遍历然后找到第一个不为0的值并输出即可。会使用到BigInteger的multiply()方法对数值进行乘法。然后转换为String字符串,for遍历charAt()进行对字符串取出在if进行判断是否为0,是则break跳出循环。

看代码详细解释:

试题 算法训练 阶乘

资源限制

时间限制:1.0s   内存限制:512.0MB


问题描述

  一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积。阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中;而35!就更大了,它已经无法存放在一个浮点型变量中。因此,当n比较大时,去计算n!是非常困难的。幸运的是,在本题中,我们的任务不是去计算n!,而是去计算n!最右边的那个非0的数字是多少。例如,5! = 1*2*3*4*5 = 120,因此5!最右边的那个非0的数字是2。再如:7! = 5040,因此7!最右边的那个非0的数字是4。请编写一个程序,输入一个整数n(n<=100),然后输出n! 最右边的那个非0的数字是多少。

  输入格式:输入只有一个整数n。

  输出格式:输出只有一个整数,即n! 最右边的那个非0的数字。


输入输出样例

样例输入

6


样例输出

2


分析:

题目的要求是计算计算阶乘的结果从右到左数不是0的数,直接输出就可以了,但是大家都应该知道阶乘值太大了,int、long根本就存储不下,这是我们就应该想到一个对象BigInteger来完成阶乘的计算,计算完毕后赋给一个字符串,通过for循环倒叙遍历然后找到第一个不为0的值并输出即可。会使用到BigInteger的multiply()方法对数值进行乘法。然后转换为String字符串,for遍历charAt()进行对字符串取出在if进行判断是否为0,是则break跳出循环。

看代码详细解释:

import java.util.Iterator;
import java.util.Scanner;
public class Main {
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    char arr[][]=new char[2*n-1][2*n-1];
    //arr[n-1][n-1];为中心
    for (int i = 0; i < 2*n-1; i++) {
      for (int j = 0; j < 2*n-1; j++) {
        arr[i][j]='.';
      }
    }
    char c=(char) (64+n);
    arr[n-1][n-1]=c;
    //西北
    for (int i = n-2; i>-1; i--) {
      arr[i][i]=(char) (arr[i+1][i+1]-1);
    }
    //东南
    for (int i = n; i<2*n-1; i++) {
      arr[i][i]=(char) (arr[i-1][i-1]-1);
    }
    //东北
    int u=n;
    for (int i = n-2; i>=0; i--) { 
      arr[i][u]=(char) (arr[i+1][u-1]-1);
      u++;
    }
    //西南
    int k=n-2;
     for (int i = n;i<2*n-1; i++) {
     arr[i][k]=(char) (arr[i-1][k+1]-1);
     k--;
  }
     //正北
     for (int i = n-2; i >-1; i--) {
    arr[i][n-1]=(char) (arr[i+1][n-1]-1);
  }
     //正南
     for (int i = n; i<2*n-1; i++) {
    arr[i][n-1]=(char) (arr[i-1][n-1]-1);
  }
     //正东
     for (int i = n; i <2*n-1; i++) {
    arr[n-1][i]=(char) (arr[n-1][i-1]-1);
    }
     //正西
     for (int i = n-2; i>=0; i--) {
    arr[n-1][i]=(char) (arr[n-1][i+1]-1);
  }
     for (int i = 0; i < 2*n-1; i++) {
        for (int j = 0; j <2*n-1 ; j++) {
          if(arr[i][j]!=' ')
          System.out.print(arr[i][j]);
        }
        System.out.println();
      }
  }
  }

image.gif


目录
相关文章
|
2月前
|
存储 人工智能 算法
【数据结构-算法】:数据结构和算法的一些个人总结(Java实现)
【数据结构-算法】:数据结构和算法的一些个人总结(Java实现)
57 0
|
2月前
|
算法 Java
Java使用Cipher.getInstance(“AES/ECB/PKCS5Padding“);加解密算法工具类实现
Java使用Cipher.getInstance(“AES/ECB/PKCS5Padding“);加解密算法工具类实现
36 0
|
5天前
|
算法 安全 Java
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
【4月更文挑战第28天】性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
19 1
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
|
2月前
|
存储 算法 Java
Java数据结构与算法-java数据结构与算法(二)
Java数据结构与算法-java数据结构与算法
111 1
|
11天前
|
设计模式 算法 Java
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
|
12天前
|
搜索推荐 算法 Java
Java实现的常用八种排序算法
提到数据结构与算法,无法避免的一点就包含排序,熟练的掌握各种排序算法则是一个程序员必备的素质之一,除此之外,排序算法也是当下各大技术公司比较喜欢问的技术点,所以,就这一点JavaBuild整理了常见的8种排序算法
6 0
|
16天前
|
机器学习/深度学习 数据采集 算法
使用 Java 实现机器学习算法
【4月更文挑战第19天】Java在数据驱动时代为机器学习提供支持,具备丰富的数学和数据结构库,适用于实现线性回归、决策树、SVM和随机森林等算法。实现时注意数据预处理、模型选择、评估指标和可视化。利用Java的库和编程能力可构建高效模型,但需按问题需求选择合适技术和优化方法。
|
25天前
|
JavaScript Java 测试技术
基于Java的职业高中智慧作业试题系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的职业高中智慧作业试题系统的设计与实现(源码+lw+部署文档+讲解等)
25 0
|
26天前
|
算法 安全 Java
java代码 实现AES_CMAC 算法测试
该代码实现了一个AES-CMAC算法的简单测试,使用Bouncy Castle作为安全提供者。静态变量K定义了固定密钥。`Aes_Cmac`函数接受密钥和消息,返回AES-CMAC生成的MAC值。在`main`方法中,程序对给定的消息进行AES-CMAC加密,然后模拟接收ECU的加密结果并进行比较。如果两者匹配,输出&quot;验证成功&quot;,否则输出&quot;验证失败&quot;。辅助方法包括将字节转为16进制字符串和将16进制字符串转为字节。
|
1月前
|
搜索推荐 Java
Java排序算法
Java排序算法
20 0