阶乘最右边的非0位

原创 2014年02月28日 13:50:47
/*描述
 也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如: 6! = 720。因此,6的阶乘最右边的非零位为2。
 写一个程序,计算N(1<=N<=50,000,000)阶乘的最右边的非零位的值。注意:10,000,000!有2499999个零。
 输入
 仅一行包含一个正整数N。
 输出
 单独一行包含一个整数表示最右边的非零位的值。
 样例输入
 6
 样例输出
 2*/
import java.util.*;

public class Main4 {
	public static int n, tmp;

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();

		if (n == 0 || n == 1) {
			System.out.println(1);
			return;
		}
		tmp = 1;
		//
		for (int i = n; i > 0; i--) {
			// 去除右边的0
			if (i % 10 == 0) {
				i = i / 10;
				while (i % 10 == 0) {
					i = i / 10;
				}
			}
			// 取它的个位数
			tmp = tmp * (i % 10);
			// 如果相乘后是10的倍数,去除右边的0
			if (tmp % 10 == 0) {
				tmp = tmp / 10;
			}
			// 如果相乘后大于10,不是10的倍数,取各位数
			if (tmp > 10) {
				tmp = tmp % 10;
			}

		}
		System.out.println(tmp);
	}
}



                

Java 算法编程 N阶乘末尾0的个数问题

求一数N的阶层 就是 1*2*3...*n   ,其实求这道题 就是求1到n 中一共可拆解出几个5,因为2*5=10 ,有一个对5 和2  必然末尾有个0 ,又因为 5肯定比2少 ,所以就简化成求5的...
  • zhuoxiuwu
  • zhuoxiuwu
  • 2015年08月06日 20:02
  • 2000

求阶乘N!末尾0的个数

POJ上有这个题目。http://poj.org/problem?id=1401。去掉一大堆没有用的信息,POJ的描述如下:For example, they defined the function...
  • luchenqun
  • luchenqun
  • 2011年05月02日 21:47
  • 12282

阶乘数最右边一个非零数字:通用解法

给出正整数n(可能有前导0),请求出n!最右非零的数位的值。
  • zxozxo4
  • zxozxo4
  • 2015年03月17日 13:50
  • 1203

阶乘

【USACO】阶乘 时间限制: 1 Sec  内存限制: 16 MB 题目描述 阶乘的定义如下: N! = 1 * 2 * 3 * ... * N-1 * N 例如, 12! = 1...
  • zsc2014030403015
  • zsc2014030403015
  • 2015年06月04日 23:10
  • 307

N!(N的阶乘)最末位非0的求解方法

关于N!的最后一位非0位, 如3!=6,最后一位非0位为6, 5!=120, 最后一位非0位为2.怎么样快速的求出最后一位非0位呢?...
  • txl16211
  • txl16211
  • 2014年10月31日 13:53
  • 1828

计算n!的最后一位非零数字的算法

 给个想法,没有具体实现,应该可以解决1M位以内的阶乘的最后非零数字问题。 当然如果超出long long的话需要用大整数的运算。 大体思想: 从n的最低位到最高位依此计算出最后一个非零数字在第k位...
  • Alvin_lym
  • Alvin_lym
  • 2006年07月25日 11:59
  • 3139

求N!中末尾有多少个0

http://blog.csdn.net/cow__sky/article/details/36190587 分析: 对N进行质因数分解 N=2^x * 3^y * 5^z...,由于10...
  • shubingzhuoxue
  • shubingzhuoxue
  • 2016年09月18日 17:08
  • 1030

bzoj 3552: 最右非零的数 && hduoj 1066: Last non-zero Digit in N!(求N!的最后一个非0位)

思路与公式: 1:n!的尾部的"0"都来自因子5和因子2(一对5和2产生一个0),如果把这些因子去掉,则可符合要求(2的个数明显 多于5的个数) 2:设F(n)为答案所要求的数,G(n)为1,2…n中...
  • Jaihk662
  • Jaihk662
  • 2016年06月29日 19:18
  • 447

POJ 1150-The Last Non-zero Digit(求阶乘最后一位非零数)

The Last Non-zero Digit Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I...
  • u013486414
  • u013486414
  • 2015年04月05日 21:04
  • 1088

阶乘最右边的非0位

/*描述 也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如: 6! = 720。因此,6的阶乘最右边的非零位为2。 写一个程序,计算N(1...
  • liangguojunainia
  • liangguojunainia
  • 2014年02月28日 13:50
  • 1137
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:阶乘最右边的非0位
举报原因:
原因补充:

(最多只允许输入30个字)