NYOJ 题目954 N!(数学)

来源:互联网 发布:jre 7u80 windows x64 编辑:程序博客网 时间:2024/04/29 08:17

N!

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

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

输入
本题有多组测试数据,每组数据一个正整数N(0<0<1000000000),以EOF结束
输出
求N!的二进制表示最低位的1的位置(从右向左数)。一组数据占一行。
样例输入
1234
样例输出
1224
提示
2! = (2)10 = (10)2,则第一个1是第二位
3! = (6)10 = (110)2,则第一个1是第二位
4! = (24)10 = (11000)2,则第一个1是第四位
来源
NOJ
上传者
TC_周亿
ac代码
#include<stdio.h>int main(){int n;while(scanf("%d",&n)!=EOF){int sum=1;while(n){sum+=n/2;n/=2;}printf("%d\n",sum);}}


0 0
原创粉丝点击