USACO/Factorials

Factorials阶乘


N的阶乘写作N!,表示小于等于N的所有正整数的乘积。 阶乘会变大得很快,如13!就必须用32位整数类型来存储,70!即使用浮点数也存不下了。 你的任务是找到阶乘最后面的非零位。举个例子:[编辑]描述

5!=1*2*3*4*5=120,所以5!的最后面的非零位是2。
7!=1*2*3*4*5*6*7=5040,所以最后面的非零位是4。

格式

PROGRAM NAME: fact4

INPUT FORMAT:

(fact4.in)

共一行,一个不大于4,220的正整数N

OUTPUT FORMAT:

(fact4.out)

共一行,输出N!最后面的非零位。

SAMPLE INPUT

7

SAMPLE OUTPUT

4
分析:
    这道题太简单了= =……但是为什么还要写出来呢?显然是我SB的写错了。。。。。。
   刚开始就是直接在每个阶段只留下最后一个不是零的数来去乘接下来的数,但是在WA+N次debug后终于发现,只留下一个数是不够的。。。因为也许这个数和下一个数乘起来末尾就成了零而不再适合了,比如本来是24,留下一个4,接下来是25,按这种方法做4*25,结果是100,最后一个非零为1,而实际上24*25=600,最后一个非零位是6。那么回到理论中,就是决定前面数字大小的数在上一阶段只留下最后一位数时被略去了而导致结果可能出错。。。所以。。。。。。一个贪心算法油然而生(= =这个词好诡异的用法。。。):不只留1位,尽可能多留~考虑到结果为int且n最大为5000,所以我们选择保留5位。。。
代码:
/*
ID:138_3531
LANG:C++
TASK:fact4
*/#include <fstream>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <iomanip>
#include <climits>
#include <vector>
#include <set>
#include <map>
#include <algorithm>
#include <string>
#include <cstring>using namespace std;int MAX(int a,int b)
{return a>b?a:b;
}int MIN(int a,int b)
{return a>b?b:a;
}ifstream fin("fact4.in");
ofstream fout("fact4.out");int f(int n)
{int k;if (n==1)   return 1;k=f(n-1)*n;while (k%10==0)k/=10;return k%10000;
}int main()
{int n;fin>>n;fout<<f(n)%10<<endl;xreturn 0;
}

转载于:https://www.cnblogs.com/AbandonZHANG/archive/2012/07/16/2598261.html

USACO / Factorials (简单模拟)相关推荐

  1. tyvj 1027 木瓜地 简单模拟

    P1027 木瓜地 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 USACO OCT09 4TH 描述 Bessie不小心游荡出Farmer John的田地 ...

  2. IoC容器总结与简单模拟

    IoC容器总结与简单模拟 当一个组件需要外部资源时,最直接也最明智的方法是执行查找,这种行为称为主动查找.但这种查找存在一个缺点--组件需要知道如何获得资源.那么它的解决方案是什么呢?请看下文. AD ...

  3. 使用动态代理简单模拟一下spring的事务管理

    按照平时写代码的习惯,我们会定义一个service接口 package com.proxy.test; public interface UserService {public void sayHel ...

  4. 7-18 银行业务队列简单模拟 (25 分)

    7-18 银行业务队列简单模拟 (25 分) 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达 ...

  5. Jmeter简介以及简单模拟性能测试

    1.Jemter简介 1.我们为什么使用Jmeter 开源,免费,基于Java编写,可集成到其他系统可拓展各个功能插件 支持接口测试, 压力(负载和压力)测试等多种功能,支持录制回放, 入门简单相较于 ...

  6. JavaWeb学习总结(四十九)——简单模拟Sping MVC

    在Spring MVC中,将一个普通的java类标注上Controller注解之后,再将类中的方法使用RequestMapping注解标注,那么这个普通的java类就够处理Web请求,示例代码如下: ...

  7. 银行业务队列简单模拟 (25 分)c语言c++

    7-2 银行业务队列简单模拟 (25 分) 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银 ...

  8. NYOJ 题目77 开灯问题(简单模拟)

    开灯问题 时间限制:3000 ms  |            内存限制:65535 KB 难度:1 描述 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯 ...

  9. FZU - 2202 犯罪嫌疑人(逻辑思维+简单模拟)

    题目链接:点击查看 题目大意:给出n和m,代表有n个人,每个人说一句话,指认一个人是无辜还是罪犯,总共有m个人说了真话,问每个人说话的真实性 题目分析:一拿到这个题目我是懵逼的..因为n给到了1e5, ...

最新文章

  1. python 条形图图注怎么集中注意力_如何用每个条形图的总和(Matplotlib)注释堆积条形图?...
  2. perl学习4--调用子程序
  3. windows环境下安装nodeJS和express,一直提示command not found-配置环境变量
  4. VTK:PolyData之ColoredPoints
  5. 手机客户端测试考虑的点
  6. Leetcode算法题(C语言)13--反转字符串
  7. 欣赏你的孩子(ZT)
  8. 日本第四次产业革命瞄准物联网
  9. IEEE期刊论文模板的查找,下载方法--
  10. SQL常用语句(大全)
  11. 利用lasso回归建立预测模型并绘制列线图 二分类结局资料的lasso回归与列线图绘制
  12. 游戏测试的概念是什么?测试方法和流程有哪些?
  13. yocto系列讲解[技巧篇]72 - BBCLASSEXTEND变量的作用
  14. BootStrap 4种图片形式 image形式 img-rounded img-circle img-thumbnail img-responsive
  15. Java之多线程Runnable(2)卖烤鸭-yellowcong
  16. Vue项目设置全屏背景图片上方有白边的问题
  17. JavaScript点击图片加上红色边框
  18. 7-1 计算存款利息 (10分) 本题目要求计算存款利息
  19. 3. 机器人正运动学---坐标系及其变换
  20. .netCHARTING报表图表控件详细介绍

热门文章

  1. 2、Android构建本地单元测试
  2. 自定义SharePoint 2013 元数据选择控件
  3. ShopNC【B2B2C】多用户电商平台系统,带WAP,微商城,圈子,门户
  4. linux 自动安装系统,cobbler 自动安装linux系统
  5. bagging算法_Bagging/Boosting傻傻分不清?来一探究竟吧~
  6. android开源2016_2016年开源领域的7大法律发展
  7. 软件开发安全性_开发具有有效安全性的软件的最佳方法
  8. 数据战略规划_在战略规划期间我应该如何协作?
  9. 样本期望的期望 总体期望_您所在领域的人才期望开放
  10. shell脚本的作用