社区讨论
16pts求调
P1022[NOIP 2000 普及组] 计算器的改良参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhjtxkc5
- 此快照首次捕获于
- 2025/11/04 08:27 4 个月前
- 此快照最后确认于
- 2025/11/04 08:27 4 个月前
CPP
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int cst, xs;
string s;
char value;
bool f;
bool isfh(char x)
{
if (x == '+' || x == '-' || x == '=')
return true;
else
return false;
}
void add(string x)
{
int ans = 0, cnt = 1;
if (!f)
{
if (!isdigit(x[x.size() - 1]))
{
value = x[x.size() - 1];
if (x[0] == '-')
{
for (int i = 1; i < x.size() - 1; i++)
{
ans += (x[i] - '0') * cnt;
cnt *= 10;
}
xs -= ans;
}
else
{
for (int i = 1; i < x.size() - 1; i++)
{
ans += (x[i] - '0') * cnt;
cnt *= 10;
}
xs += ans;
}
}
else
{
if (x[0] == '-')
{
for (int i = 1; i < x.size(); i++)
{
ans += (x[i] - '0') * cnt;
cnt *= 10;
}
cst += ans;
}
else
{
for (int i = 1; i < x.size(); i++)
{
ans += (x[i] - '0') * cnt;
cnt *= 10;
}
cst -= ans;
}
}
}
else{
if (!isdigit(x[x.size() - 1]))
{
value = x[x.size() - 1];
if (x[0] == '-')
{
for (int i = 1; i < x.size() - 1; i++)
{
ans += (x[i] - '0') * cnt;
cnt *= 10;
}
xs += ans;
}
else
{
for (int i = 1; i < x.size() - 1; i++)
{
ans += (x[i] - '0') * cnt;
cnt *= 10;
}
xs -= ans;
}
}
else
{
if (x[0] == '-')
{
for (int i = 1; i < x.size(); i++)
{
ans += (x[i] - '0') * cnt;
cnt *= 10;
}
cst -= ans;
}
else
{
for (int i = 1; i < x.size(); i++)
{
ans += (x[i] - '0') * cnt;
cnt *= 10;
}
cst += ans;
}
}
}
}
int main()
{
cin >> s;
for (int i = 0; i <= s.size(); i++)
{
if (i == s.size() || isfh(s[i]))
{
int j = i - 1, cnt = 0;
while (j >= 0 && !isfh(s[j]))
{
j--, cnt++;
}
string tmp = s.substr(j + 1, cnt);
if (j < 0 || s[j] == '+' || s[j] == '=')
tmp = '+' + tmp;
else
tmp = '-' + tmp;
//cout << tmp << "\n";
add(tmp);
}
if(i==s.size()) continue;
if (s[i] == '=')
f = true;
}
cout<<value<<"=";
printf("%.3lf",(double)cst/(double)xs);
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...