排位赛(三)| H题
【题目描述】
满足 f(x)= x 的所有点的集合称为不动点,求 f(x)= (ax)1/2 + b 的所有不动点;
【输入格式】
第一行一个 t (1 <= t <= 100)表示数据组数;
接下来 t 行,每行两个数据 a 和 b(-1000 <= a, b <= 1000), 保证该函数至少有一个不动点,且所有不动点均为正数;
【输出格式】
对于每组数据,第一行输出一个数表示不动点的个数,第二行按从小到大的顺序输出所有的不动点;
【解题思路】
(1)转化为求解一元二次方程,注意转化过程中满足的一些不等式条件要加到 if 里;
(2)可以利用求根公式估计解的范围;
(3)注意尽量不要使用浮点数以及开方这种东西,会产生浮点数误差;
【正确代码】
1 #include <iostream> 2 3 using namespace std; 4 5 int main() 6 { 7 int t; 8 scanf("%d", &t); 9 10 int ans[5]; 11 12 while(t --) 13 { 14 int a, b; 15 scanf("%d%d", &a, &b); 16 17 int cnt = 0; 18 for (int x = b; x <= 3000; x ++) //x = b来自于转化过程中的不等条件,x <= 3000是利用求根公式估值; 19 { 20 if(x * x - 2 * b * x + b * b == a * x && a * x >= 0) //直接判断是否满足方程,过程不涉及浮点数 21 { 22 ans[cnt] = x; 23 cnt ++; 24 } 25 } 26 if(cnt == 1 || (cnt == 2 && ans[0] == ans[1])) printf("1\n%d\n", ans[0]); 27 if(cnt == 2 && ans[0] != ans[1]) printf("2\n%d %d\n", ans[0], ans[1]); 28 } 29 30 return 0; 31 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架