[AcWing] 2058. 笨拙的手指(C++实现)秦九韶算法

您所在的位置:网站首页 horner算法与秦九韶算法 [AcWing] 2058. 笨拙的手指(C++实现)秦九韶算法

[AcWing] 2058. 笨拙的手指(C++实现)秦九韶算法

2024-07-16 19:04| 来源: 网络整理| 查看: 265

[AcWing] 2058. 笨拙的手指(C++实现)秦九韶算法 1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结

1. 题目

在这里插入图片描述 在这里插入图片描述

2. 读题(需要重点注意的东西)

思路: ① 依次枚举二进制的所有位,将每一位改为不同的数(只有一种情况),将此数对应的十进制数放在哈希表中; ② 然后依次枚举三进制的所有位,将每一位改为不同的数(有两种情况),转换为十进制; ③ 然后查看哈希表中是否有对应的十进制即可(题目保证有唯一解)。

3. 解法

---------------------------------------------------解法---------------------------------------------------

#include #include #include #include using namespace std; // 将b进制的数转化成十进制 int get(string s, int b) { int res = 0; // 秦九韶算法:每次将前面的数向高位移动一位,即*b,然后加上当前个位数,即+c for (auto c: s) res = res * b + c - '0'; return res; } int main() { string a, b; cin >> a >> b; unordered_set S; for (auto& c: a) // 二进制数 { c ^= 1; // 将二进制数的每一位取反 S.insert(get(a, 2)); // 秦九韶算法求十进制数 c ^= 1; // 将这一位取反回来 } for (auto& c: b) // 三进制数 { char t = c; for (int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3