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

南阳954--N!(数学)

时间:2015-07-10 08:07:42      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

N!

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
 
描述

阶乘(Factorial)是一个很有意思的函数,但是不少人都比较怕它。现在这里有一个问题,给定一个N(0<0<1000000000),求N!的二进制表示最低位的1的位置(从右向左数)。

 
输入
本题有多组测试数据,每组数据一个正整数N(0<0<1000000000),以EOF结束
输出
求N!的二进制表示最低位的1的位置(从右向左数)。一组数据占一行。
样例输入
1
2
3
4
样例输出
1
2
2
4
提示
2! = (2)10 = (10)2,则第一个1是第二位
3! = (6)10 = (110)2,则第一个1是第二位
4! = (24)10 = (11000)2,则第一个1是第四位
来源
NOJ
//求N!的二进制表示最低位的1的位置,也即是求N!的阶乘中有多少个质因子2,如果一个数没有质因子2,那么最低位一定为1,有多少个质因子2那么就会像左移动多少位
 1 #include <stdio.h>
 2 int main()
 3 {
 4     int n ;
 5     while(~scanf("%d", &n))
 6     {
 7         int i, sum=1 ; 
 8         for(i=2; i<=n; i*=2)   //分解质因子 ; 
 9         {
10             sum += n/i ;    
11         }    
12         printf("%d\n", sum) ;
13     }
14     return 0 ;
15 }  

 

南阳954--N!(数学)

标签:

原文地址:http://www.cnblogs.com/fengshun/p/4634723.html

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