8 条题解
-
9
#include<bits/stdc++.h> using namespace std; long long now,ans; // long long防止超int char suan='+'; // suan=算 默认为加法(因为第一串数字必定为加号<除非有负号>) string s; int main(){ cin>>s; int len=s.length(); // 降低时间复杂度 for(int i=0;i<len;i++){ if(s[i]=='+'||s[i]=='-'){ // 如果遇到运算符就把已经存好的数字加入ans中 if(suan=='+'){ // 加减法分开计算 ans+=now; }else{ ans-=now; } now=0; // 重置数字 suan=s[i]; // 重新设置运算符 }else{ now=now*10+s[i]-'a'; // 修改当前数字 } } if(suan=='+'){ // 因为最后一串数字结尾没有运算符,无法在for中进行运算,所以要这里补上 ans+=now; }else{ ans-=now; } cout<<ans; return 0; }
-
2
字符串解析
int main() { ios::sync_with_stdio(false); cin.tie(0); cin >> s; long long now = 0; long long ans = 0; char last = '+'; for (int i = 0; i < s.length(); i++) { if (s[i] == '+' || s[i] == '-') { if (last == '+') ans += now; else ans -= now; last = s[i]; now = 0; } else if (s[i] >= 'a' && s[i] <= 'j') now = now * 10 + (s[i] - 'a'); } if (last == '+') ans += now; else ans -= now; cout << ans << endl; return 0 }
-
0
十年OI一场空 不开long long见祖宗
cin >> s; for (int i = s.size() - 1; i >= 0; i--) { if (s[i] == '+') { sum += tmp; tmp = 0; n = 0; } else if (s[i] == '-') { sum += tmp*-1; tmp = 0; n = 0; } else if (i == 0) { tmp += pow(10, n) * (s[i] - 'a'); sum += tmp; } else { tmp += pow(10, n) * (s[i] - 'a'); n++; } } cout << sum;
-
-3
写题解请注意 鼓励大家写题解,但注意题解格式。
题解一定要有思路解析或代码注释,能否让别人理解你的思路
也是你的能力的检验,不要只放无意义的代码给大家复制,那就失去了做题的初心。
给代码两端加上这个会舒服一些
```cpp
你的代码
```
</span>
这个点在键盘的左上角tab上面那个键,注意切换输入法
#include<iostream> using namespace std; int main() { int n; cin>>n;//这是一个注释 return 0; }
请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。
抄袭题解一经发现直接取消成绩。
题解被删除的可能
- 代码不符合格式规范
- 没有思路讲解或者没有注释,
- 无意义的题解
大家携手共同维护一个良好的编程环境,如果一经发现,多次作乱。可能会被管理员拉黑,请注意,一旦拉黑即失去登陆资格。
-
-4
long long sum=0; deque<long long> q; queue<char> c; int main(){ cin >> s; for(int i=0; i<s.size(); ++i){ if(s[i]>='a' && s[i]<='j'){ long long op=0; while(s.size()>i && s[i]>='a' && s[i]<='j'){ op=op*10+(int)(s[i]-'a'); ++i; } --i; q.push_back(op); } else c.push(s[i]); } while(c.size()){ char ch=c.front(); c.pop(); long long x=q.front(); q.pop_front(); long long y=q.front(); q.pop_front(); if(ch=='-')q.push_front(x-y); else q.push_front(x+y); } 用队列,复杂度O(n),开long long 是防止超int
-
-4
暴力嘿嘿
for (int i=0;s[i]>='a' && s[i]<='j';i++) { h=i; ans=ans*10+s[i]-'a'; } h+=2; char bl=s[h-1]; for (int i=h;i<s.length();i++) { if (s[i]=='+') { if (bl=='+') { ans+=x; } else { ans-=x; } x=0; bl=s[i]; } else if (s[i]=='-') { if (bl=='+') { ans+=x; } else { ans-=x; } x=0; bl=s[i]; } else { x=x*10+s[i]-'a'; } } if (bl=='+') { ans+=x; } else { ans-=x; }
- 1
信息
- ID
- 1226
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 451
- 已通过
- 191
- 上传者