打卡信奥刷题(939)用C++实现信奥 P1134 [USACO3.2] 阶乘问题
P1134 [USACO3.2] 阶乘问题
题目描述
也许你早就知道阶乘的含义,NNN 阶乘是由 111 到 NNN 相乘而产生,如:
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 (1≤N≤5×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=ansa[n%4]%10;
}
printf(“%d”,ans);
return 0;
}

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



所有评论(0)