美文网首页
蓝桥杯备战刷题Day01- 2019/1/15

蓝桥杯备战刷题Day01- 2019/1/15

作者: 咣超 | 来源:发表于2019-01-15 21:35 被阅读0次

1.

问题描述

输入一个正整数n,输出n!的值。

其中n!=1*2*3*…*n

算法描述

n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数aA[0]表示a的个位,A[1]表示a的十位,依次类推。

a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。

首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。

输入格式

输入包含一个正整数nn<=1000。

输出格式

输出n!的准确值。

样例输入

10

样例输出

3628800

这个题目的思路其实在题目中已经告诉你了,用数组来存放目标数的每个“位”从下标0开始0存放的是这个数的各位然后下标1是十位一次类推,然后开始阶乘了满10就向前进一个位,数组中的每一个数都要和“i”也就是那个阶乘的数相乘从个位开始乘然后得到的结果就是sum然后sum对10取余得到的就是当前这个位的数字如阶乘数是4时sum=12了取余得到2就是结果的个位然后sum再除10得到的就是要向前进的位数下面是这个程序的代码。

public static void main(String[] args) {

     Scanner scan = new Scanner(System.in);

     int num=scan.nextInt();

     int[] arr = new int[5000];   // 这里我们用一个很大的数组保险事实上最后的数也差不多大

     if(num==1 || num==0) {

         System.out.println(1);

     }else {

     numChange(arr,num);

}

     scan.close();

}

public static void numChange(int[] arr, int num) {

     int p=0, sum=0, temp=0;

     arr[0]=1;

     for(int i=1;i<=num;i++) {

         for(int j=0;j<=5000;j++) {       // 这里就是整个代码的核心了这里的j实际上就是数组的下标

             sum=arr[j]*i+temp;          

             arr[j]=sum%10;     

             temp=sum/10;

}

}

     for(int j=5000;j>=0;j--) {

             if(arr[j]!=0) {         // 从数组的后往前找非0的数也就是目标数中最高位的那个数的下标

             p=j;

             break;

}

}

     while(p>=0) {

            System.out.print(arr[p--]);   // 输出

}

}

相关文章

  • 蓝桥杯备战刷题Day01- 2019/1/15

    1. 问题描述 输入一个正整数n,输出n!的值。 其中n!=1*2*3*…*n。 算法描述 n!可能很大,而计算机...

  • 蓝桥杯备战刷题Day04-2019/1/18

    4.蓝桥杯字母图形 问题描述 利用字母可以组成一些美丽的图形,下面给出了一个例子: ABCDEFG BABCDEF...

  • 蓝桥杯备战刷题Day02-2019/1/23

    2. 问题描述 输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述 由于a和b都比较大,所...

  • 蓝桥杯备战刷题Day03-2019/1/17

    3. 问题描述 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。 它的一个重要性质是...

  • 蓝桥杯备战刷题Day05-2019/1/19

    5.蓝桥杯01子串 问题描述 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:...

  • 蓝桥杯真题题解收藏

    收藏一些在网上发现的,觉得写的不错的蓝桥杯真题题解内容,给学生练习备战蓝桥杯时所用。2020蓝桥杯省赛第二场C组_...

  • 蓝桥杯备战

    前不久接触到蓝桥杯,有一个蓝桥杯组委会的老师来我们学校宣讲,鼓励我们参赛,虽然是大一,但是对计算机编程很感兴趣,还...

  • 【蓝桥杯python】小白的艰难刷题之路。A+B问题

    先给大家献上蓝桥杯的练习系统,因为我是新手刷题人所以先更新一下基础练习的普通试题集。“蓝桥杯”练习系统 (lanq...

  • 蓝桥杯有感

    寒假线上学习的时候就开始为这次蓝桥杯做准备,刷算法题,看算法书,学习算法知识,这一周终于迎来了期待已久的蓝桥杯。...

  • 正经向-蓝桥杯:N个最小和

    难得的正经向题解系列,如果想要补充基础知识+AC题解的话请移步:备战CCC-优先队列还行【蓝桥杯-N个最小和】 题...

网友评论

      本文标题:蓝桥杯备战刷题Day01- 2019/1/15

      本文链接:https://www.haomeiwen.com/subject/pbkudqtx.html