hdu1492(一个数的所有humber bunber的约数的个数)

题目意思:

求一个数的所有humber bunber的约数的个数

http://acm.hdu.edu.cn/showproblem.php?pid=1492

题目分析:

求出2,3,5,7的所有个数,用他们能组合出多少的数,就是n的Humber number数

AC代码:

/**

*类似求素数的个数每一个数都可以表示成一些素数的乘积

*对于给定的n,需要求出n包含多少的2,3,5,7;用这些个数相乘即为n的Humber number

*/

#include<iostream>

#include<cstring>

using namespace std;

int main()

{

long long n,sum;//注意64位

while(cin>>n&&n){

int s[4];

for(s[0]=1;n%2==0;s[0]++,n/=2);

for(s[1]=1;n%3==0;s[1]++,n/=3);

for(s[2]=1;n%5==0;s[2]++,n/=5);

for(s[3]=1;n%7==0;s[3]++,n/=7);

sum=s[0]*s[1]*s[2]*s[3];

cout<<sum<<endl;

}

return 0;

}

时间: 2024-11-01 04:49:43

hdu1492(一个数的所有humber bunber的约数的个数)的相关文章

九度OJ 1087 约数的个数

题目1087:约数的个数 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6056 解决:1838 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1000) 接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000) 当N=0时输入结束. 输出: 可能有多组输入数据,对于每组输入数据, 输出N行,其中每一行对应上面的一个数的约数的个数. 样例输入: 5 1 3 4 6 12 样例输出: 1 2 3

【c语言】二维数组中的查找,杨氏矩阵在一个二维数组中,每行都依照从左到右的递增的顺序排序,输入这种一个数组和一个数,推断数组中是否包括这个数

// 二维数组中的查找,杨氏矩阵在一个二维数组中.每行都依照从左到右的递增的顺序排序. // 每列都依照从上到下递增的顺序排序.请完毕一个函数,输入这种一个数组和一个数.推断数组中是否包括这个数 #include <stdio.h> #define col 4 #define rol 4 int yang(int(*p)[col], int num) { int i = 0; int j = col - 1; while (j+1) { int *q = &(p[i][j]); if

【海量数据处理】N个数中找出最大的前K个数

N个数中找出最大的前K个数,需要用小堆实现. 分析:由于小堆的堆顶存放堆中最小的数据,可以通过与堆顶数据进行比较,将大数据存放在堆中,注意在每次改变堆顶数据后,进行调堆,使堆顶一直存放整个堆中最小元素. void AdjustDown(int *a, size_t root, size_t size)//下调 {//小堆 size_t parent = root; size_t child = parent * 2 + 1; while (child < size) { if (child + 

约数的个数

约数的个数 Description mmoaay小侄子今年上初中,老师出了一道求约数个数的题目,比如8的约数有1,2,4,8共4个. 当数比较小的时候可以人工算,当n较大时就难了. mmoaay嫌麻烦,现在让你编个程序来算. Input 一行一个整数.最后以0结束. Output 分别求出这些整数的约数个数,最后的0不用处理. Sample Input 81000 Sample Output 4 9 题解:求正整数378000共有多少个正约数? 解:将378000分解质因数378000=2^4×

从控制台输入一个数,计算从0加到这个数的和

// 功能:从控制台输入一个数,计算从0加到这个数的和 import java.io.*; public class Jisuan{   public static void main (String args[])    {      try      {        InputStreamReader isr = new InputStreamReader(System.in);        BufferedReader br = new BufferedReader(isr); Sys

九度OJ—题目1087:约数的个数

题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1000) 接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000) 当N=0时输入结束. 输出: 可能有多组输入数据,对于每组输入数据, 输出N行,其中每一行对应上面的一个数的约数的个数. 样例输入: 5 1 3 4 6 12 样例输出: 1 2 3 4 6 来源: 2011年清华大学计算机研究生机试真题 答疑: 解题遇到问题?分享解题心得?讨论本题请访问:h

物理cpu个数,每个物理cpu核心数,逻辑cpu个数

1.物理cpu个数: 实际cpu插槽的个数,linux中/proc/cpuinfo中,cpu物理核心由physical id这一项表示,值为0-n 查看物理cpu个数:cat /proc/cpuinfo | grep "physical id"|uniq |wc -l 2.每个物理cpu核心数: 即每个物理cpu包含的核心数(core 个数),/proc/cpuinfo中core id这一项值:0-n 查看每个物理cpu核心数:cat /proc/cpuinfo | grep &quo

牛牛想对一个数做若干次变换,直到这个数只剩下一位数字。 变换的规则是:将这个数变成 所有位数上的数字的乘积。比如285经过一次变换后转化成2*8*5=80. 问题是,要做多少次变换,使得这个数变成个位数。

牛牛想对一个数做若干次变换,直到这个数只剩下一位数字.变换的规则是:将这个数变成 所有位数上的数字的乘积.比如285经过一次变换后转化成2*8*5=80.问题是,要做多少次变换,使得这个数变成个位数. 输入描述: 输入一个整数.小于等于2,000,000,000. 输出描述: 输出一个整数,表示变换次数. 输入例子: 285 输出例子: 2 1 #include<stdio.h> 2 #include<stdlib.h> 3 int main() 4 { 5 int n; 6 sc

输入两个数,第一个数决定一个nXn的矩阵,第二个数决定从1开始赋值,赋值的上限 (MD花了半天时间,思路不对害死人)

1 输入两个数,第一个数决定一个nXn的矩阵,第二个数决定从1开始赋值,赋值的上限 2 3 比如: 4 5 输入:5 18 6 7 输出: 8 9 1 2 3 4 5 10 11 16 17 18 0 6 12 13 15 0 0 0 7 14 15 14 0 0 0 8 16 17 13 12 11 10 9 18 19 20 21 输入: 4 12 22 23 输出: 24 25 1 2 3 4 26 27 12 0 0 5 28 29 11 0 0 6 30 31 10 9 8 7 32