LQ0118 第几个幸运数枚举+迭代

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0118 第几个幸运数枚举+迭代相关的知识,希望对你有一定的参考价值。

题目来源:蓝桥杯2018初赛 C++ A组D题

题目描述
到x星球旅行的游客都被发给一个整数,作为游客编号。
x星的国王有个怪癖,他只喜欢数字3,5和7。
国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。
前10个幸运数字是:3 5 7 9 15 21 25 27 35 45,因而第11个幸运数字是:49
小明领到了一个幸运数字 59084709587505。
去领奖的时候,人家要求他准确说出这是第几个幸运数字,否则领不到奖品。
请你帮小明计算一下,59084709587505是第几个幸运数字。

输出格式
输出一个整数表示答案

问题分析
枚举因子3、5和7,并采用迭代计算。
枚举的数中包括1。

AC的C语言程序如下:

/* LQ0118 第几个幸运数 */

#include <stdio.h>

typedef long long LL;
LL N = 59084709587505;

int main()

    int cnt = 0;
    for (LL i = 1; i <= N; i *= 3)
        for (LL j = 1; i * j <= N; j *= 5)
            for (LL k = 1; i * j * k < N; k *= 7)
                    cnt++;

    printf("%d\\n", cnt);

    return 0;

以上是关于LQ0118 第几个幸运数枚举+迭代的主要内容,如果未能解决你的问题,请参考以下文章

LQ0106 方格填数枚举

LQ0064 9数算式枚举

LQ0009 平方十位数枚举

LQ0009 平方十位数枚举

LQ0210 六角填数枚举

LQ0203 排它平方数枚举+进制