Trailing Zeroes (I) LightOJ - 1028(求因子个数)
题意:
给出一个N 求N有多少个别的进制的数有后导零
解析:
对于一个别的进制的数要转化为10进制 (我们暂且只分析二进制就好啦)
An * 2^(n-1) + An-1 * 2^(n-2) + ``````+ A1 * 2^1 + A0 * 2^0 = N
因为有后导零 我们暂且只看有一个后导零的情况 即A0 = 0
那么 2 * ( An * 2^(n-2) + An01 * 2^(n-3) + `````` + A1) = N
即 An * 2^(n-2) + An-1 * 2^(n-3) + `````` + A1 = N/2
把2替换为x进制 且 左边设为M
则 M = N / x
所以M的个数即为N的因子的个数
用算术基本定理求因子个数即可

最后还要减1呀!
懒得打代码了。。。。代码原文地址:https://blog.csdn.net/zyz_3_14159/article/details/52824900
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
typedef long long ll;
bool vis[];
int prime[],cnt;
void getprime()
{
cnt=;
int i,j;
for(i=;i<=;i++)
{
if(!vis[i])
prime[cnt++]=i;
for(j=*i;j<=;j+=i)
vis[j]=;
}
}
ll fun(ll n)
{
ll ans=;
int num,i;
for(i=;i<cnt&&prime[i]*prime[i]<=n;i++)
{
if(n%prime[i]==)
{
num=;
while(n%prime[i]==)
{
num++;
n/=prime[i];
}
ans*=(num+);
}
}
if(n>)
ans*=;
return ans-;
}
int main()
{
int cas,c;
ll n;
getprime();
scanf("%d",&cas);
for(c=;c<=cas;c++)
{
scanf("%lld",&n);
if(n!=)
printf("Case %d: %lld\n",c,fun(n));
else
printf("Case %d: 0\n",c);
}
return ;
}
Trailing Zeroes (I) LightOJ - 1028(求因子个数)的更多相关文章
- Trailing Zeroes (I) LightOJ - 1028
题意就是给你一个数让你找它的正因子个数(包括自身,不包括1),这个地方用到一个公式,如果不用的话按正常思路来写会TL什么的反正就是不容易写对. 求任意一个大于1的整数的正因子个数 首先任意一个数n,n ...
- LightOj1028 - Trailing Zeroes (I)---求因子个数
题目链接:http://lightoj.com/volume_showproblem.php?problem=1028 题意:给你一个数 n (1<=n<=10^12), 然后我们可以把它 ...
- LightOj 1138 - Trailing Zeroes (III) 阶乘末尾0的个数 & 二分
题目链接:http://lightoj.com/volume_showproblem.php?problem=1138 题意:给你一个数n,然后找个一个最小的数x,使得x!的末尾有n个0:如果没有输出 ...
- 172. Factorial Trailing Zeroes(阶乘中0的个数 数学题)
Given an integer n, return the number of trailing zeroes in n!. Example 1: Input: 3 Output: 0 Explan ...
- POJ 2992 Divisors (求因子个数)
题意:给n和k,求组合C(n,k)的因子个数. 这道题,若一开始先预处理出C[i][j]的大小,再按普通方法枚举2~sqrt(C[i][j])来求解对应的因子个数,会TLE.所以得用别的方法. 在说方 ...
- Trailing Zeroes (III)(lightoj 二分好题)
1138 - Trailing Zeroes (III) PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: ...
- Almost All Divisors(求因子个数及思维)
---恢复内容开始--- We guessed some integer number xx. You are given a list of almost all its divisors. Alm ...
- ✡ leetcode 172. Factorial Trailing Zeroes 阶乘中的结尾0个数--------- java
Given an integer n, return the number of trailing zeroes in n!. Note: Your solution should be in log ...
- Easy Number Challenge(暴力,求因子个数)
Easy Number Challenge Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I ...
随机推荐
- Linux之linux基础命令2
目录相关: 创建目录: mkdir 目录名 递归创建a/b c/d: mkdir -p a/b c/d 递归创建test/a,b,c,d四个目录: mkdir - p test{a,b,c,d} 递归 ...
- 树莓派3b添加python时间同步脚本
树莓派没有电池,因此断电后系统时间会停止,直到你开机后又继续计时,所以会造成系统时间和实际时间有很大的误差. 因为项目需要用到本地时间,精度要求不高不想折腾(如果需要高精度,需要安装ntp),所以考虑 ...
- JMeter下Groovy和BeanShell语言在不同组件中性能差异实践探究
一般而言JMeter下性能最好的是jar包这类java原生请求,对于JMeter并没有原生支持的请求,一般都会将其直接编译为jar包,然后再JMeter中调用,这样性能最好. 但是有些需求并不适合用j ...
- Frida----基本代码
代码来自官网:https://www.frida.re/docs/examples/android/ import frida, sys def on_message(message, data): ...
- PHP核心技术——异常和错误处理
PHP只有手动抛出异常后才能捕获异常 $a = null; try { $a = 5/0; echo $a,PHP_EOL; } catch (exception $e) { $e -> get ...
- python3实现合并两个有序数组
很早就听同学和师兄经常说刷题很重要,然而编程能力一直都很渣的我最近才开始从leetcode的初级算法开始.今天遇到的这道题虽然很简单,因为是头一次用自己的方法速度还不错,特此记录一下,还大神们请不要嘲 ...
- dvwa——sql手动注入和sqlmap自动注入
手动注入 low: 源码: <?php if( isset( $_REQUEST[ 'Submit' ] ) ) { // Get input $id = $_REQUEST[ 'id' ]; ...
- SharpDevelop 笔记
1. 下载地址: http://jaist.dl.sourceforge.net/project/sharpdevelop/ 2. 使用 VS2012 去掉编译不通过的 Test ,其它可以运行调试. ...
- type命令详解
转自:http://codingstandards.iteye.com/blog/831504 在脚本中type可用于检查命令或函数是否存在,存在返回0,表示成功:不存在返回正值,表示不成功. $ t ...
- Linux 做网关
首先创建两张路由表,只需要添加到相应的文件中即可,Linux一共支持255个路由表,rt_tables文件中默认已经存在了三张路由表,分别是: 255 local 254 main 2 ...