记录编号 |
206395 |
评测结果 |
AAAAA |
题目名称 |
[NOIP 2000PJ]计算器的改良 |
最终得分 |
100 |
用户昵称 |
Riolu |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.012 s |
提交时间 |
2015-11-06 22:00:13 |
内存使用 |
0.67 MiB |
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
char s[99999];
int main()
{
freopen("computer.in","r",stdin);
freopen("computer.out","w",stdout);
cin.getline(s,99998);
int i,j;
int len=strlen(s);
for(i=0;i<len;i++)
if(s[i]=='=') break;
int d=i; //找=号的位置
//char ans[99999];
i=0;
while(s[i]=='-'||s[i]=='+'||s[i]=='='|| ('0'<=s[i]&&s[i]<='9'))
i++;
char a = s[i];
//cout<<a; 找未知数
//cout<<d;
int l=0,r=0,book[99999]={0};
for(i=0;i<d;i++)
{
if(s[i]==a){
int findn=i-1,temp=0,cheng=1;
book[i]=1;
while('0'<=s[findn] && s[findn]<='9' &&findn>=0)
{temp+=(s[findn]-48)*cheng; cheng*=10;book[findn]=1;findn--;}
if(s[findn]=='-' && findn>=0) {book[findn]=1;l-=temp;}
if(s[findn]=='+' && findn>=0) {l+=temp;book[findn]=1;}
if(findn==-1) l+=temp;
}
}
for(i=d+1;i<len;i++)
{
if(s[i]==a){
int findn=i-1,temp=0,cheng=1;book[i]=1;
while('0'<=s[findn] && s[findn]<='9' && findn>=d)
{temp+=(s[findn]-48)*cheng; cheng*=10;book[findn]=1;findn--;}
if(s[findn]=='-' && findn>=0) {book[findn]=1;l+=temp;}
if(s[findn]=='+' && findn>=0) {l-=temp;book[findn]=1;}
if(findn==d) l-=temp;
}
}
//cout<<l;
for(i=d;i>=0;i--)
{
int findn;
if('0'<=s[i] && s[i]<='9'&& book[i]==0){
int temp=0,cheng=1;findn=i;
while('0'<=s[findn] && s[findn]<='9' && findn>=0 )
{temp+=(s[findn]-48)*cheng; cheng*=10;findn--;}
if(s[findn]=='-' && findn>=0) r+=temp;
if((s[findn]=='+' && findn>=0) || findn==-1) r-=temp;
i=findn;
}
if(findn==-1) break;
}
for(i=len-1;i>d;i--)
{
int findn;
if('0'<=s[i] && s[i]<='9'&& book[i]==0){
int temp=0,cheng=1;findn=i;
while('0'<=s[findn] && s[findn]<='9' && findn>=d )
{temp+=(s[findn]-48)*cheng; cheng*=10;findn--;}
if(s[findn]=='-' && findn>=0) r-=temp;
if((s[findn]=='+' && findn>=0) || findn==-1) r+=temp;
i=findn;
}
if(findn==d) break;
}
//cout<<r;
double ans=(double)(r)/(double)(l);
cout<<a<<"=";
printf("%.3lf",ans);
}