社区讨论

为什么6级第一编程题12.5?

灌水区参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@m4ex6phd
此快照首次捕获于
2024/12/08 09:23
去年
此快照最后确认于
2025/11/04 13:10
4 个月前
查看原帖

P1题目↓

树上游走(*为不确定)

题目背景

此题为GESP6级编程第一题.

*题目描述

你有一棵无穷个节点的二叉树,其每个节点的左子节点编号都是根节点的编号的2倍,其每个节点的右子节点编号都是根节点的编号的2倍+1. (说实话,就是完全二叉树) 你所在的节点的编号为ss.
操作有三种:UU第一操作,返回它的根节点;LL第二操作,返回它的左子节点;RR第三操作,返回它的右子节点.

输入格式

第一行:两个整数nnss,其中nn表示操作次数;
*第二行:一个长度为nn的字符串,表示操作步骤.

输出格式

仅包含一个整数,此整数为最后停留的节点编号.

输入输出样例:

样例输入:
CPP
3 2
URR
样例输出:
CPP
7

说明/提示

nnss测试点占比
*<3<3*<332020%
<10<10*<106<10^62020%
<10610^6<1012<10^{12}6060%

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 条回复,欢迎继续交流。

正在加载回复...