跳至正文

USACO 3.2.1 Factorials 解题报告

  • OI路程

花了出奇的长时间,以前我是做过这题的,但是当时的话并没有实际的考虑清楚,因为我知道10就是由2和5组成的,我当时的算法就是用ans保存当前的尾数,然后遇到一个5就除以二,但是没考虑平方,那我就保存后5尾数就AC了,但是这个做法是欠妥的,你想啊,如果万一那个尾数是100002,虽然不切实际(如果切实际我就不能AC),但是确实不够严谨。 想了好久,想到了一个算法,不会怕特殊情况了,先把所有的5的个数统计出来,然后除去相应的2就可以了。 代码如下: / LANG: C ID: yyogoo1 PROG: fact4 / #include int main(void) { int ans = 1; int i, j; int n, k = 0; freopen("fact4.in", "r", stdin); freopen("fact4.out", "w", stdout); scanf("%d", &n); for(i = 2; i

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注