ALGO-157_蓝桥杯_算法训练_阶乘末尾(高精度)

问题描述
  给定n和len,输出n!末尾len位。
输入格式
  一行两个正整数n和len。
输出格式
  一行一个字符串,表示答案。长度不足用前置零补全。
样例输入
6 5
样例输出
00720
数据规模和约定
  n<=30, len<=10

 

记:

高精度类型涉及到数据溢出,注意用数组保存

 

 1 #include <stdio.h> 
 2 #define LEN 10
 3 
 4 int main(void)
 5 {        
 6     int n,k;
 7     int i,j;
 8     int carry;    /*进位存储*/
 9     int arr[LEN+1] = {0};/*数组存阶乘值,防溢出*/
10     scanf("%d %d",&n,&k);    
11     arr[1] = 1;    /*低位从1开始*/
12     for (i = 1 ; i <= n ; i ++)
13     {
14         carry = 0;
15         for (j = 1 ; j <= k ; j ++) 
16         {
17             arr[j] *= i;
18             arr[j] += carry;            
19             carry = arr[j]/10;
20             if (arr[j] > 9)
21             {                
22                 arr[j] = arr[j]%10;
23             }
24         }
25     }
26     
27     for (i = k ; i >= 1 ; i --)
28     {
29         printf("%d",arr[i]);/*从高位往低位输出*/
30     }
31     
32     return 0;
33 }

 

转载于:https://www.cnblogs.com/mind000761/p/8873858.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值