按照题目要求,用高精虐一波题,没想到被题目虐了。。。
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=30;
int a[N],b[N],c[N];
string div(string A){
memset(c,0,sizeof(c));
memset(a,0,sizeof(a));
for (int i=0;i<A.size();i++){
a[i]=A[i]-'0';
}
int t=0;
for (int i=0;i<A.size();i++){
int q=t*10+a[i];
c[i]=q/2;
t=q%2;
}
string ans="";
int f=0;
for (int i=0;i<A.size();i++){
if (f!=0||c[i]!=0){
f=1;
ans=ans+char(c[i]+'0');
}
}
return ans;
}
bool com(string A){
int n=A.size();
if (n==1){
return stoi(A)>=2;
}
else return true;
}
string times(string A){
memset(a,0,sizeof(a));
memset(c,0,sizeof(c));
for (int i=A.size()-1;i>=0;i--){
a[i]=A[i]-'0';
}
int t=0;
for (int i=0;i<A.size();i++){
c[i]=(a[i]*2+t)%10;
t=a[i]*2/10;
}
int f=0;
string ans="";
for (int i=A.size();i>=0;i--){
if (f!=0||c[i]!=0){
f=1;
ans=char(c[i]+'0')+ans;
}
}
return ans;
}
string plus1(string A){
int n=A.size()-1;
A[n]=char(((A[n]-'0')+1)+'0');
return A;
}
signed main(){
int n;
string s;
cin>>n>>s;
string q;
cin>>q;
for (char c:q){
if (c=='U'&&com(s)){
s=div(s);
}
else if (c=='L')s=times(s);
else if (c=='R'){
string d=times(s);
s=plus1(d);
}
}
cout << s << endl;
return 0;
}
求调QWQWQW!!