牛客:使徒袭来,小白兔分身

探讨通过编程解决战斗状态评估与分身术数量计算的问题,涉及均值不等式应用及指数增长原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使徒来袭

题目

神秘的使徒袭击了第三新东京市,少男少女们驾驶着决战兵器EVA守护着人类的和平。

牛可乐是NERV特务机关的指挥官,他必须时刻了解牛牛/牛妹/牛能三人的战斗状态。现在牛可乐获得了这三位EVA驾驶员的战斗力之积,在保证三位驾驶员战斗力均为正实数的情况下,请你帮助牛可乐计算这三位驾驶员的战斗力之和最低是多少?

解析

知识点:均值不等式以及均值不等式推广到n的形式,自行搜索

代码

#include <stdio.h>
#include <math.h>
int main()
{
    int n;
    double m;
    scanf("%d", &n);
    m = 3 * pow(n, 1.0 / 3);
    printf("%.3lf", m);
    return 0;
}

小白兔分身

题目

白兔学会了分身术。

一开始有一只白兔,接下来会进行k轮操作,每一轮中每一只白兔都会变成p只白兔。

要求k轮后白兔的总数恰好为n。

要求找到两个正整数p,k,最大化p+k

解析

最大加一,原因是指数增长最快

代码

#include <stdio.h>

int main()
{
    long long int n;
    scanf("%lld", &n);
    printf("%lld", n + 1);
    return 0;
}

如果题目改成p+k最小化

就可以看成如果p的k次方等于n且p+k小于p+k的最大值,那么最小值就是p+k

即 if (pow(p, k) == n && (p + k) < s)

两个for循环p,k

代码

#include <stdio.h>
#include <math.h>
int main()
{
    int n, p, k, s;
    scanf("%d", &n);
    s = n + 1;
    for (p = 1; p <= n; p++)
    {
        for (k = 1; k <= n; k++)
        {
            if (pow(p, k) == n && (p + k) < s)
            {
                s = p + k;
            }
        }
    }
    printf("%d", s);
    return 0;
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值