南阳oj 求N!的二进制表示最低位的1的位置(从右向左数)。

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
怎么证明???
 1 #include<stdio.h>
 2 
 3 int main()
 4 {
 5     int n,s;
 6     while(scanf("%d",&n)>0)
 7     {
 8         s=1;
 9         while(n)
10         {
11             s=s+(n>>=1);
12         }
13         printf("%d\n",s);
14     }
15     return 0;
16 }

 

PID274 / 最末非0位

题目描述

小笨是个贪玩的小孩,一天到晚都要玩游戏。(这样可不行哦>_<)。有一天晚上,他在电脑上找到了一个游戏,很简单。就是电脑显示一个数n,要你数出n!的最末非0位是什么数。如n=5,n!=120。最末非0位上的数即为2;小笨跟他名字一样有一点笨,总是算不出正确答案,只好找到了你。请你帮帮忙哦^()^.

输入格式

仅一行,n.(n<=2000000)

输出格式

n的最末非0位

 

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<cstring>
 4 #include<cstdlib>
 5 using namespace std;
 6 typedef long long LL;
 7 const LL INF = 1000000000000;
 8 
 9 int main()
10 {
11     LL n,i,sum;
12     while(scanf("%lld",&n)>0)
13     {
14         sum=1;
15         for(i=1;i<=n;i++)
16         {
17             sum=sum*i;
18             sum=sum%INF;
19             while(sum%10==0)
20             {
21                 sum=sum/10;
22             }
23         }
24         printf("%lld\n",sum%10);
25     }
26     return 0;
27 }

 

转载于:https://www.cnblogs.com/tom987690183/p/3696073.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值