牛牛在一个无穷大的完全三叉树中玩耍,其节点按照根节点一层一层地从左往右依次编号,根节点编号为1。现在他在两个节点a和b之间游玩,他想知道这两个节点的最近公共祖先的编号是多少。请你帮助他设计一个算法,求出a和b点的最近公共祖先的编号。
区块链毕设网qklbishe.com为您提供问题的解答
牛牛在一个无穷大的完全三叉树中玩耍,其节点按照根节点一层一层地从左往右依次编号,根节点编号为1。现在他在两个节点a和b之间游玩,他想知道这两个节点的最近公共祖先的编号是多少。请你帮助他设计一个算法,求出a和b点的最近公共祖先的编号。
#include <bits/stdc++.h> using namespace std ; signed main() { int a, b; cin >> a >> b; auto get_father = [&](int x) { if(x % 3 == 0) { return x / 3; } else if(x % 3 == 1) { return x / 3; }else { return (x+1)/3; } }; while(a != b) { if(a > b) { a = get_father(a); }else { b = get_father(b); } } cout << a << endl; return 0; }
27:18
以上就是关于问题牛牛在一个无穷大的完全三叉树中玩耍,其节点按照根节点一层一层地从左往右依次编号,根节点编号为1。现在他在两个节点a和b之间游玩,他想知道这两个节点的最近公共祖先的编号是多少。请你帮助他设计一个算法,求出a和b点的最近公共祖先的编号。的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训