码迷,mamicode.com
首页 > 其他好文 > 详细

uva 568(数学)

时间:2014-07-17 19:14:19      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:uva   数学   

题解:从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;
		}
		long int num;
		int a = 1;
		long int temp1;
		for (int i = 1; i <= n; i++) {
			num = 10;
			temp = (i * a) % num;
			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;
}


uva 568(数学),布布扣,bubuko.com

uva 568(数学)

标签:uva   数学   

原文地址:http://blog.csdn.net/hyczms/article/details/37912925

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!