uva 568(数学)
2016-02-09 12:39
246 查看
题解:从1開始乘到n,由于结果仅仅要最后一位。所以每乘完一次,仅仅要保留后5位(少了值会不准确,刚開始仅仅保留了一位。结果到15就错了,保留多了int会溢出,比方3125就会出错) 和下一个数相乘,接着保留5位,注意5位没有后导零,最后取5位中最后一个不是零的就能够了。
#include <iostream> #include <cstdio> using namespace std; int main() { int n; long int temp; while (scanf("%d", &n) != EOF) { if (n == 0) { printf("%5d -> 1\n", n); continue; } int a = 1; long int temp1; for (int i = 1; i <= n; i++) { temp = (i * a) % 10; if (temp == 0) { temp1 = i * a; while (temp == 0) { temp1 = temp1 / 10; temp = temp1 % 10; } a = temp1 % 100000; } else a = (i * a) % 100000; } printf("%5d -> %ld\n", n, temp); } return 0; }
相关文章推荐
- 拓薪教育-hibernate视频下载-任亮
- cocos2d-x中的CCTableView的相关用法
- usaco 1.2.1 milk2
- 设置jsp默认打开方式
- 拓薪教育-Oracle视频下载-任亮
- usaco 1.1.3 friday
- 【第一章】 Spring概述 ——跟我学Spring3
- leetcode 做题记录2
- usaco 1.1.1 ride
- SimpleDateFormat 格式化 解析
- Codeforces 625B - War of the Corporations
- Scala 中object和class的区别
- cocos2d-x特效之CCControlPotentiometer
- 拓薪教育-中国移动电商实战项目-任亮
- Shiro 学习笔记(3)—— 授权初步
- Cas(01)——简介
- 第一章 Java代码执行流程
- 学习sed,awk最好的路径
- 虚拟机的创建
- NGINX301 REWRITE官方博客文档