zoukankan      html  css  js  c++  java
  • 南阳954--N!(数学)

    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
    ", sum) ;
    13     }
    14     return 0 ;
    15 }  
  • 相关阅读:
    PHP时间戳常用转换
    redis基本指令
    P2501 [HAOI2006]数字序列
    P2679 子串
    P2759 奇怪的函数
    P6823 「EZEC-4」zrmpaul Loves Array
    P6631 [ZJOI2020] 序列
    P2887 [USACO07NOV]Sunscreen G
    P3287 [SCOI2014]方伯伯的玉米田
    拓展欧几里得算法揭秘
  • 原文地址:https://www.cnblogs.com/soTired/p/4634723.html
Copyright © 2011-2022 走看看