试题 算法训练 阶乘末尾
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
给定n和len,输出n!末尾len位。
输入格式
一行两个正整数n和len。
输出格式
一行一个字符串,表示答案。长度不足用前置零补全。
样例输入
6 5
样例输出
00720
数据规模和约定
n<=30, len<=10。
#include<stdio.h>
int main()
{
long long n, len, sum = 1, t = 0, s, cd = 1;
scanf("%lld%lld", &n, &len);
for (int i = 1;i <= n;i++)
{
sum = sum * i ;
sum=sum/10;
}
s = sum;
while (s) {
s = s / 10;
t++;
}
s = len - t;
for (int i = 0;i < s;i++)
printf("0");
if (sum)
printf("%lld", sum);
return 0;
}
当时在考场上首先想到的是运用数组的方法,但发现由于时隔许久才来敲代码,所以对于数组的理解没那么深刻,故用了多个For循环之后脑袋搞晕了,但这个方法确实避开了数组的使用,不得不说,夏文涛还是挺聪明的,当然我也理所当然被他嘲讽了一波。。。
但是毕竟第一次打竞赛,失误还是能够接受,所以往后的竞赛时光大伙共勉吧!