蓝桥杯简单题---阶乘相关计算

该程序旨在解决蓝桥杯竞赛中的一道算法题,通过限制每次乘积不超过1000并不断取模来避免整数溢出,同时寻找阶乘后最后一个非零数字。关键在于mul=(mul%1000)*n%1000这一行代码,它确保了计算过程中的数字保持在三位数范围内,并找到最后的非零个位数。
摘要由CSDN通过智能技术生成

蓝桥杯算法训练VIP-阶乘 - C语言网 (dotcpp.com)

 1.输入的数是n(n<=100),输出的是最右边不是0的数字

2.只让我们找到那个数字是多少,如果我们认真做这道题,我们会计算到出来这个数是多少,然后再查找那个数字是几,而且这个数可能超限;那么我们就可以限制计算中的每个数的大小都是3位或者4位数字不让他们超过int的表示范围,见到0就噶见到就噶

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int mul=1;
    do
    {
        //将最后的每个数字限定在1000之内
        mul=((mul%1000)*n)%1000;
        while(mul%10==0)
        {
            mul/=10;
        }
        //每次结束的时候个位都不是0
    }while(--n);
    printf("%d",mul%10);
    
	return 0;
}

有人回问mul=((mul%1000)*n)%1000为什么要取那么多次余,在计算的最后取余也是一样的吗???

看这里

(9条消息) 蓝桥杯简单题_2201_76033304的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值