不对的代码
#include<bits/stdc++.h>
using namespace std;
long long n,x;
string s;
deque<int> dq;
void change(long long k)
{
while(k)
{
dq.push_front(k%2);
k/=2;
}
}
int main()
{
cin>>n>>x;
cin>>s;
change(x);
for(int i=0;i<s.size();i++)
{
if(s[i]=='U'&&dq.size()>1)
dq.pop_back();
else if(s[i]=='L')
dq.push_back(0);
else
dq.push_back(1);
}
long long ans=0;
for(int i=0;i<dq.size();i++)
ans=ans*2+dq[i];
cout<<ans;
return 0;
}
正确的代码
#include<bits/stdc++.h>
using namespace std;
long long n,x;
string s;
deque<int> dq;
void change(long long k)
{
while(k)
{
dq.push_front(k%2);
k/=2;
}
}
int main()
{
cin>>n>>x;
cin>>s;
change(x);
for(int i=0;i<s.size();i++)
{
if(s[i]=='U'&&dq.size()>1)
dq.pop_back();
else if(s[i]=='L')
dq.push_back(0);
else if(s[i]=='R')
dq.push_back(1);
}
long long ans=0;
for(int i=0;i<dq.size();i++)
ans=ans*2+dq[i];
cout<<ans;
return 0;
}
仅仅多了if(s[i]=='R'),严重怀疑题目数据有问题,调了半天!!