问题标题: 酷町堂:help!!!

0
0
已解决
车轩立
车轩立
资深守护
资深守护

请问思路是???

为什吗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分!!!


0
已采纳
汪宇航
汪宇航
新手启示者
新手启示者

思路:你先将二换十,然后进行加减乘除,最后在进行十换二

0
0
0
车轩立
车轩立
资深守护
资深守护

@李醒     @薛成志     @赵睿泽 !!!

ding

 

0
0
0
0
我要回答