社区讨论
为什么6级第一编程题12.5?
灌水区参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @m4ex6phd
- 此快照首次捕获于
- 2024/12/08 09:23 去年
- 此快照最后确认于
- 2025/11/04 13:10 4 个月前
P1题目↓
树上游走(*为不确定)
题目背景
此题为GESP6级编程第一题.
*题目描述
你有一棵无穷个节点的二叉树,其每个节点的左子节点编号都是根节点的编号的2倍,其每个节点的右子节点编号都是根节点的编号的2倍+1. (说实话,就是完全二叉树) 你所在的节点的编号为.
操作有三种:第一操作,返回它的根节点;第二操作,返回它的左子节点;第三操作,返回它的右子节点.
输入格式
第一行:两个整数和,其中表示操作次数;
*第二行:一个长度为的字符串,表示操作步骤.
输出格式
仅包含一个整数,此整数为最后停留的节点编号.
输入输出样例:
样例输入:
CPP3 2
URR
样例输出:
CPP7
说明/提示
| 测试点占比 | ||
|---|---|---|
| * | *< | % |
| * | % | |
| < | % |
P2程序↓
代码
CPP#include<bits/stdc++.h>
using namespace std;
int main()
{
unsigned long long n,s,t;
string b;
cin>>n>>s>>b;
t=s;
for(int i=0;i<b.length();i++)
{
if(b[i]=='U')
{
if(t%2)
{
t--;
t/=2;
}
else
{
t/=2;
}
}
if(b[i]=='L')
{
t*=2;
}
if(b[i]=='R')
{
t*=2;
t++;
}
}
cout<<t;
return 0;
}
(前五个点过了,后五个点要用高精度?)
回复
共 4 条回复,欢迎继续交流。
正在加载回复...