资深守护
请问思路是???
为什吗70???
#include <bits/stdc++.h>
using namespace std;
char c;
int f[5000005], n, m, r;
int main() {
cin >> n >> m;
r = n;
for(int i = 1; i <= n; ++i) cin >> c, f[i] = c - '0';
while(m --) {
cin >> c;
if(c == '*') f[++ r] = 0;
else if(c == '+') ++ f[r];
else if(c == '-') -- f[r];
else f[r - 1] += f[r] >> 1, --r;
}
for(int i = r; i > 1; --i) {
f[i - 1] += f[i] >> 1;
f[i] = f[i] & 1;
}
for(int i = 1; i <= r; ++i) cout << f[i];
return 0;
}
请说明改法
PS:水帖的举报!!!
车轩立在2021-12-13 19:14:46追加了内容
ding
童鞋们,快来回答下!!!
@赵睿泽 ,@汪宇航 不行呀!!!,看一下这个代码
#include <bits/stdc++.h>
using namespace std;
int cnt;
int n,m;
string t;
int f[105];
int main() {
cin>>n>>m;
cin>>t;
for(int i=0;i<n;i++){
f[++cnt]=t[i]-'0';
}
cin>>t;
for(int i=0;i<m;i++){
if(t[i]=='/') cnt--;
else if(t[i]=='*') f[++cnt]=0;
else if(t[i]=='+'){
for(int i=cnt;i>=1;i--){
if(f[i]==1){
f[i]=0;
}
else{
f[i]=1;
break;
}
}
}
else{
for(int i=cnt;i>=1;i--){
if(f[i]==0){
f[i]=1;
}
else{
f[i]=0;
break;
}
}
}
}
for(int i=1;i<=cnt;i++) cout<<f[i];
return 0;
}
70分!!!