P1134 [USACO3.2] 阶乘问题

题目描述

也许你早就知道阶乘的含义,NNN 阶乘是由 111NNN 相乘而产生,如:

12!=1×2×3×4×5×6×7×8×9×10×11×12=479,001,60012!=1\times 2\times 3\times 4\times 5\times 6\times 7\times 8\times 9\times 10\times 11\times 12=479{,}001{,}60012!=1×2×3×4×5×6×7×8×9×10×11×12=479,001,600

121212 的阶乘最右边的非零位为 666

写一个程序,计算 N (1≤N≤5×107)N\ (1\le N\le5\times 10^7)N (1N5×107) 阶乘的最右边的非零位的值。

注意10,000,000!10{,}000{,}000!10,000,000! 的末尾有 249999924999992499999 个零。

输入格式

仅一行包含一个正整数 NNN

输出格式

一个整数,表示最右边的非零位的值。

输入输出样例 #1

输入 #1

12

输出 #1

6

说明/提示

USACO Training Section 3.2

C++实现

#include
using namespace std;
int n,ans=1;
int a[4]= {6,8,4,2};
int main() {
scanf(“%d”,&n);
while (n>0) {
for (int i=1; i<=n%10;++i)
if (i!=5) ans=ansi%10;
n=n/5;
ans=ans
a[n%4]%10;
}
printf(“%d”,ans);
return 0;
}

在这里插入图片描述

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

Logo

集算法之大成!助力oier实现梦想!

更多推荐