求n!中某个因子个数【模板】
来源:互联网 发布:编译arm linux内核4.5 编辑:程序博客网 时间:2024/05/21 22:26
Problem B: Zhazhahe究竟有多二
Description
Zhazhahe竟然能二到把耳机扔到洗衣机里去洗,真的是二到了一种程度,现在我们需要判断一下zhazhahe二的程度(就是计算zhazhahe的脑残值有几个2的因子),下面给你一个n,n!表示zhazhahe的脑残值。
Input
输入一个正整数t(0<t<3000)表示样例组数,每组样例输入一个正整数n(0<n<1e18),n!表示zhazhahe的脑残值
Output
输出一个正整数表示zhazhahe二的程度
Sample Input
32415
Sample Output
1311
#include<iostream>#include<stdlib.h>#include<cstdio>#include<algorithm>#include<cstring>#include<queue>#include<math.h>using namespace std;int main(){ int t; long long n; cin>>t; while(t--) { while(cin>>n) { long long sum = 0; while(n/2!=1) { sum += n/2; n = n/2; } sum += 1; cout<<sum<<endl; } }}
或
#include<iostream>#include<cstdio>#include<string.h>#include<cmath>#include<algorithm>using namespace std;long long n;long long geshu(long long n){ long long num=0; while(n) { num+=n/2; n/=2; } return num;}int main(){ int t; cin>>t; while(t--) { cin>>n; cout<<geshu(n)<<endl; } return 0;}
求n的阶乘某个因子a的个数,如果n比较小,可以直接算出来,但是如果n很大,此时n!超出了数据的表示范围,这种直接求的方法肯定行不通。其实n!可以表示成统一的方式。
n!=(k^m)*(m!)*a 其中k是该因子,m=n/k,a是不含因子k的数的乘积
下面推导这个公式
n!=n*(n-1)(n-2)……3*2*1
=(k*2k*3k…..*mk)*a a是不含因子k的数的乘积,显然m=n/k;
=(k^m)*(1*2*3…*m)*a
=k^m*m!*a
接下来按照相同的方法可以求出m!中含有因子k的个数。
因此就可以求除n!中因子k的个数
int count(int n,int k){ int num=0; while(n) { num+=n/k; n/=k; } return num;}
0 0
- 求n!中某个因子个数【模板】
- 求n!中含有某个因子个数的方法
- 求n!中含有某个因子个数的方法
- 求n!中含有某个因子个数的方法
- UVa 10780 幂和阶乘 求n!中某个因子的个数
- 求n的阶层中含有某个因子个数的方法
- 求n!中因子m的个数
- Acdream1084 寒假安排 求n!中v因子个数
- 寒假安排 求n !中v因子的个数
- 求某个数n的某一个因子的个数 (高斯取整函数思想)
- 求n的质因子的个数
- 求n的因子的个数和。.
- 反素数 模板 求因子的个数为n的最小的数是什么
- 求1到N个数中包含质因子m的数的个数
- 分解阶乘中某个因子个数
- 求n个数(1~n)的质因子
- 求N!的二进制表示中最低位1的位置 ->求 N!的质因子2的个数
- (阶乘末尾0的个数的求法)求1~N中因子的数量的方法
- 初次接触Android Studio发现并解决的一些问题
- CodeForces 304A Pythagorean Theorem II 【基础】【暴力】
- 前端工程师面试题
- 主板知识详解:支持内存类型
- 关于Object被Destroy之后,该Object的原引用==null的问题
- 求n!中某个因子个数【模板】
- Python技巧(二)字符串
- Python学习笔记
- 微信小程序之如何注册微信小程序
- Unity 与 NGUI 坐标转换原理
- CStatic添加图片
- java--静态变量和访问修饰符
- 设计模式(1) ------- 简单工厂模式
- Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置