灵梦的计算机

题目描述
博丽灵梦(HakureiReimu)在成功抢回八云紫(YakumoYukari)用隙间偷走的香火钱后,她和依神紫苑(YorigamiShion)去香霖堂买东西啦!

灵梦想买一个计算器来计算神社的香火钱,但是因为香霖堂的东西太贵了,她选择使用河童重工网络(KawashiroNitori’sNetwork,KNN)网购一个Casio计算器。

但出人意料的是,灵梦使用KNN买回来的Casio是个假货,最多只能显示整数部分(即向下取整)。

灵梦很苦恼,因为这个计算器可能会导致一些特别大的误差。所以灵梦想让拥有外界的式神(指电脑)的你帮她解决一个问题。

灵梦得到了三个实数n,a,b(4≤n≤5,5≤a,b≤10),她成功地计算了na+nb,得到了一个只显示整数部分的结果。

灵梦想知道,若存在一个实数m(m≥0),使得ma+mb的结果在计算器上与na+nb的结果显示出来完全一致时,m的变化范围,即的最大值与最小值之差。

如果你不知道如何计算nk,请使用cmath库的pow()函数,pow(n,k)的结果即为nk的结果。

为了提高本题的难度,灵梦给你设置了组询问。而为了在某种程度上减少你的输入和输出量,我们采用以下的代码来生成询问(代码来自河童重工):

在调用 Mker::init() 函数之后,你第i次调用 Mker::read(n,a,b) 函数后得到的便是第i次询问的ni,ai和bi。

为了减少你的输出量,令第i次询问的答案为si,你只需要输出。如果你的答案与标准答案的绝对误差在10-2以内,你的答案则被视为是正确答案。
为了让你更好地做题,这里给出了关于op的说明:
当op=1时,有a=b,否则无特殊限定。

输入
输入共一行,包含3个正整数T,seed,op,含义见题目描述。

输出
输出共一行,输出题目描述中要求输出的答案。

样例输入
复制样例数据
500 233 0
样例输出
0.00503

提示
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这个ans 进行了两次迭代, 前面一次是取f1(x) , 后面的是在f2(x) ,但是他们的导数都是一样的,所以分母相同,
可以先看看这个 , 然后在看这题解 牛顿迭代
正宗题解


#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
namespace Mker {
#define uint unsigned int
    uint sd;
    int op;
    inline void init() {
        scanf("%u %d", &sd, &op);
    }
    inline uint uint_rand() {
        sd ^= sd << 13;
        sd ^= sd >> 7;
        sd ^= sd << 11;
        return sd;
    }
    inline double get_n() {
        double x = (double) (uint_rand() % 100000) / 100000;
        return x + 4;
    }
    inline double get_k() {
        double x = (double) (uint_rand() % 100000) / 100000;
        return (x + 1) * 5;
    }
    inline void read(double &n,double &a, double &b) {
        n = get_n();
        a = get_k();
        if (op) b = a;
        else b = get_k();
    }
}
using namespace Mker;
int T;
double n, a, b, k, ans;
int main() {
    scanf("%d", &T);
    init();
    while (T--) {
        read(n, a, b);
        k = a * pow(n, a - 1) + b * pow(n, b - 1);
        ans += 1 / k;
    }
    printf("%0.5f", ans);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值