hud_1058   Humble Numbers

2024-01-09 19:30
文章标签 numbers humble hud 1058

本文主要是介绍hud_1058   Humble Numbers,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

hud_1058   Humble Numbers

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1058 

题目原文: 

 题意:

该题就是让我们找出题意里所谓的“Humble Numbers”,根据题目的意思,‘Humble Numbers’指的是一个数的所有质因子必须由2,3,5和7组成,非质因子无要求,例如14,它的因子为1,2,7,14,它的质因子为7,而7是在{2,3,5,7}这个集合里的,所以14是Humble Numbers,例如22,它的因子为1,2,11,22,它的质因数有2,11,然而11不在{2,3,5,7}这个集合里面,所以22不是Humble Numbers。题目的要求就是让我们找出第i个Humble Numbers。

解题思路:

根据题目意思,Humble Numbers的质因数自能是{2,3,5,7},所以Humble Numbers = 2^{a}*3^{b}*5^{c}*7^{d},根据这个推导式子打表即可得到最后的答案。(这里注意如果一个数没有质因子,那么它也是Humble Numbers)。

题目的注意点:

该题目需要注意的第一个注意点在解题思路上已经提及,第二个主意点的是它的输出格式,其中末尾由11,12,13这三个数组成的,就用-th,如果除末尾11,12,13之外,末尾由1组成,则用-st,末尾由2组成,则用-nd,末尾由3组成,则用-rd,除此之外,全部使用-th。

AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 6000;
int num[maxn];  //用于存取Humble number序列
int main()
{num[0] = 0, num[1] = 1;int l1,l2,l3,l4;l1 = l2 = l3 = l4 =1;for(int i = 2; i < maxn; i++){num[i] = min(min(num[l1]*2, num[l2]*3), min(num[l3]*5, num[l4]*7));if(num[i] == 2*num[l1]) l1++;if(num[i] == 3*num[l2]) l2++;if(num[i] == 5*num[l3]) l3++;if(num[i] == 7*num[l4]) l4++;}                                    //使用推导式打表得出Humble number数序列int n;while(cin>>n){if(n == 0){break;      // 是0就结束程序,跳出循环 }if(n % 100 == 11 or n % 100 == 12 or n % 100 == 13){printf("The %dth humble number is %d.\n", n, num[n]);}else if(n % 10 ==1){printf("The %dst humble number is %d.\n", n, num[n]);}else if(n % 10 ==2){printf("The %dnd humble number is %d.\n", n, num[n]);}else if(n % 10 ==3){printf("The %drd humble number is %d.\n", n, num[n]);}else{printf("The %dth humble number is %d.\n", n, num[n]);}}return 0;
}

 

这篇关于hud_1058   Humble Numbers的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/588187

相关文章

计蒜客 Half-consecutive Numbers 暴力打表找规律

The numbers 11, 33, 66, 1010, 1515, 2121, 2828, 3636, 4545 and t_i=\frac{1}{2}i(i+1)t​i​​=​2​​1​​i(i+1), are called half-consecutive. For given NN, find the smallest rr which is no smaller than NN

高精度打表-Factoring Large Numbers

求斐波那契数,不打表的话会超时,打表的话普通的高精度开不出来那么大的数组,不如一个int存8位,特殊处理一下,具体看代码 #include<stdio.h>#include<string.h>#define MAX_SIZE 5005#define LEN 150#define to 100000000/*一个int存8位*/int num[MAX_SIZE][LEN];void

leetcode#628. Maximum Product of Three Numbers

题目 Given an integer array, find three numbers whose product is maximum and output the maximum product. Example 1: Input: [1,2,3]Output: 6 Example 2: Input: [1,2,3,4]Output: 24 Note: The lengt

leetCode#448. Find All Numbers Disappeared in an Array

Description Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once. Find all the elements of [1, n] inclusive that do not appear in this

【codeforces】55D. Beautiful numbers 数位DP

传送门:【codeforces】55D. Beautiful numbers 题目分析:被每一位整除则用二进制记录已经包括的数字的个数,以及对2520取模后的状态。由于对5整除当且仅当最后一个数为0或5,对2整除当且仅当最后一个数为偶数,且1~9的最小公倍数为2520,不包括2,5后的最小公倍数为252,所以除最后一层对2520取模,其余时候都对252取模即可。由于整除的状态有限,最多只有

【SGU】113. Nearly prime numbers 合数分解

传送门:【SGU】113. Nearly prime numbers 题目分析:O(sqrt(N))。。 代码如下: #include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std ;#define rep( i , a , b ) for

USACO Section 3.1 Humble Numbers

题意: 已知一个集合S  由S的任意子集作为因子  可构造出一个数字  求  这些构造出的数字中第k大的数字是多少 思路: 拿到这题就被“数字不是很多而且比较连续暴力枚举就好”这个思路迷惑了  果断TLE… 跪了一次后想到通过bfs构造可取  这时用了queue维护bfs  用priority_queue维护答案(大顶堆  内部最多k个数字)  用set判重复(5*2=2*5)  写

Sum of Square Numbers

Given a non-negative integer c, your task is to decide whether there're two integers a and b such that a2 + b2 = c. Example 1: Input: 5Output: TrueExplanation: 1 * 1 + 2 * 2 = 5 Example 2: Inpu

百万豪车同款!上半年交付暴涨5倍,AR HUD强攻20万以下车型

作为人车交互的新窗口,AR HUD的潜能还在不断凸显。 8月初,问界M9通过OTA升级新增AR HUD观影功能,通过三指滑动,能够轻松实现AR HUD与三联屏之间的无缝流转,支持75英寸投射沉浸观看。 这也意味着,继取代仪表盘、融合中控屏和辅助驾驶系统信息等之后,AR HUD的娱乐功能潜能逐步被挖掘。同时,更大的呈现空间、虚像距离,也对AR HUD配套的软件平台和算法提出更高要求。 高工智能

JavaScript - First step - Numbers and operators

Types of numbers Integers 整数Floating point numbers 单精度浮点数Doubles 双精度浮点数Binary 二进制Octal 八进制Hexadecimal 十六进制 Arithmetic operators 算术运算符 + 加法- 减法* 乘法/ 除法% 求余** 指数 (次方 5 ** 5 = 5 * 5 * 5 * 5 * 5) Oper