news 2026/5/11 11:59:34

AT_abc026_d 高橋君ボール1号 题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AT_abc026_d 高橋君ボール1号 题解

AT_abc026_d [ABC026D] 高橋君ボール1号

Link:
https://www.luogu.com.cn/problem/AT_abc026_d
https://atcoder.jp/contests/abc026/tasks/abc026_d

题目描述

高桥君擅长打棒球。他能够投出一种名为“高桥君球 1 号”的变化球。

这种球在投出后t tt秒的位置可以表示为f ( t ) = A × t + B × sin ⁡ ( C × t × π ) f(t) = A \times t + B \times \sin(C \times t \times \pi)f(t)=A×t+B×sin(C×t×π)

你需要在t ≥ 0 t \geq 0t0f ( t ) = 100 f(t) = 100f(t)=100的时刻击打这个球。请你求出此时的t tt

输入格式

输入通过标准输入按以下格式给出。

A AAB BBC CC

  • 1 11行给出表示f ( t ) f(t)f(t)公式的整数A , B , C A, B, CA,B,C,用空格分隔。( 1 ≤ A , B , C ≤ 100 ) (1 \leq A, B, C \leq 100)(1A,B,C100)

输出格式

请输出一个满足f ( t ) = 100 f(t) = 100f(t)=100t ≥ 0 t \geq 0t0t tt。如果有多个解,输出任意一个即可。只要∣ f ( t ) − 100 ∣ ≤ 10 − 6 |f(t) - 100| \leq 10^{-6}f(t)100∣106,就视为正确答案。

输出末尾需换行。

由于本题容易产生误差,请特别注意精度问题。

输入输出样例 #1

输入 #1

1 1 1

输出 #1

100

输入输出样例 #2

输入 #2

53 82 49

输出 #2

1.63372043395339

说明/提示

样例解释 1

t = 100 t = 100t=100时,f ( t ) = 100 f(t) = 100f(t)=100

样例解释 2

请注意,解可能不唯一。

由 ChatGPT 4.1 翻译


Solution

大致题意

求解方程A x + B sin ⁡ ( C π x ) − 100 = 0 Ax+B\sin(C\pi x)-100=0Ax+Bsin(Cπx)100=0的近似解。

解答

本题的方程对应的函数f ( x ) = A x + B sin ⁡ ( C π x ) − 100 f(x)=Ax+B\sin(Cπx)-100f(x)=Ax+Bsin(Cπx)100并不是一个严格的单调函数,因此二分法不一定能立刻想到。除了二分法以外,本题可以使用牛顿法求解。

由于f ( x ) = A x + B sin ⁡ ( C π x ) − 100 f(x)=Ax+B\sin(Cπx)-100f(x)=Ax+Bsin(Cπx)100

则导函数f ′ ( x ) = A + B C π cos ⁡ ( C π x ) f'(x)=A+BC\pi \cos(C\pi x)f(x)=A+BCπcos(Cπx)

根据牛顿法的近似公式x n + 1 = x n − f ( x n ) f ′ ( x n ) x_{n+1}=x_n-\dfrac{f(x_n)}{f'(x_{n})}xn+1=xnf(xn)f(xn)即可将这个问题直接转化为一个递推问题,当相邻两项的差值小于给定的精度时即可结束递推输出答案。本题由于已经规定了A , B , C A,B,CA,B,C皆为[ 1 , 100 ] [1,100][1,100]范围内的整数,因此初始值x 0 x_0x0也就是代码中的sln[0],可以选择从100 A \dfrac{100}{A}A100开始。

需要说明的是:

  1. 牛顿法通常比二分法收敛更快,适用于不具有单调性的场合,但是前提是所求的表达式必须在指定的区间上可导
  2. 牛顿法的局限性在于只能求出方程某一个特定的近似解(如果方程有多解)。换用不同的初始值,得到的近似解也可能不同。本题要求对于可能的多解输出任意一个解即可,因此牛顿法可以通过此题。
  3. 如果使用long double类型来存储答案,计算乘幂、三角函数和对数等需要使用函数powlsinlcosllog10l等来进行计算,输入/输出需要使用格式字符串"%Lf"

AC 代码

#include<cmath>#include<iostream>usingnamespacestd;longdoubleA,B,C,pi=3.1415926535897932385L,eps=1e-13L;longdoublesln[10000];//The function.longdoubleF(longdoublex){returnA*x+B*sinl(C*pi*x)-100.L;}//The derivate function of F.longdoublederivateF(longdoublex){returnA+B*C*pi*cosl(C*pi*x);}intmain(){cin>>A>>B>>C;intr=0;sln[0]=100.L/A;while(r<=9998){sln[r+1]=sln[r]-1.0L*F(sln[r])/derivateF(sln[r]);if(fabs(sln[r+1]-sln[r])<=eps)break;r+=1;}printf("%.14Lf",sln[r]);}

2023.08.21 更新:修正公式中的一处错误,增加一些补充说明。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 11:57:32

3分钟掌握AI图像修复:Real-ESRGAN-GUI让模糊照片重获新生

3分钟掌握AI图像修复&#xff1a;Real-ESRGAN-GUI让模糊照片重获新生 【免费下载链接】Real-ESRGAN-GUI Lovely Real-ESRGAN / Real-CUGAN GUI Wrapper 项目地址: https://gitcode.com/gh_mirrors/re/Real-ESRGAN-GUI 你是否曾为模糊的老照片感到惋惜&#xff1f;是否因…

作者头像 李华
网站建设 2026/5/11 11:54:17

VaRest插件架构解析:UE4/UE5中RESTful API通信的最佳实践

VaRest插件架构解析&#xff1a;UE4/UE5中RESTful API通信的最佳实践 【免费下载链接】VaRest REST API plugin for Unreal Engine 4 - we love restfull backend and JSON communications! 项目地址: https://gitcode.com/gh_mirrors/va/VaRest 在Unreal Engine游戏开发…

作者头像 李华
网站建设 2026/5/11 11:53:02

自建AI编程助手服务:Recodex部署与Codex API代理实战

1. 项目概述与核心价值最近在折腾AI编程助手&#xff0c;发现OpenAI的Codex模型确实好用&#xff0c;但直接访问官方服务总是不太稳定&#xff0c;速度也时快时慢&#xff0c;对于需要深度集成的开发工作来说&#xff0c;体验不够丝滑。于是&#xff0c;我花了不少时间研究自建…

作者头像 李华
网站建设 2026/5/11 11:53:02

RSA密钥管理实战:从生成、存储到安全分发的全流程解析

1. RSA密钥管理的重要性与挑战 想象一下你有一把独一无二的数字钥匙&#xff0c;能打开公司最重要的保险箱。这就是RSA密钥在现代加密系统中的角色——它守护着你的数据安全、验证着交易真伪。但现实中我见过太多团队把密钥管理当成事后诸葛亮&#xff1a;有人把私钥写在代码注…

作者头像 李华