问题概括
给定一个数,让你求出这个数阶乘的非零末位。
解题思路
1求出阶乘的结果
2将结果末尾的0去掉(因为对结果无影响,且方便计算)
3取出非零结果的末几位(加大运算范围)
4输出结果
程序代码
#include<iostream>
using namespace std;//使用namespace
int a,c,i;//设置变量a,c,i
int main()//主函数的起始
{
cin>>a;//输入变量a(为题目中给定的的数)
i=1;//先将循环变量i设为1
c=1;//将变量c初始值设为1(用于存储阶乘的结果)
for(i=1;i<=a;i++)//当循环变量i小于等于变量a时,执行下方语句,每次将变量i加1(即从1循环到a的所有数)
{
c=c*i%1000000;//将变量c乘变量i取末7位,完成阶乘运算且控制了数值大小
while(c%10==0)//在每次运算中,看看末位是否为0,若为0,执行循环体(为了去除末尾所有的0
{
c=c/10;//每次将末位的0去掉,直到末尾非0
}
}
cout<<c%10<<endl;//输出变量c的末位即为结果
return 0;//结束主函数的运行
}