记录编号 206395 评测结果 AAAAA
题目名称 [NOIP 2000PJ]计算器的改良 最终得分 100
用户昵称 GravatarRiolu 是否通过 通过
代码语言 C++ 运行时间 0.012 s
提交时间 2015-11-06 22:00:13 内存使用 0.67 MiB
显示代码纯文本
  1. #include<cstdio>
  2. #include<iostream>
  3. #include<cstring>
  4. using namespace std;
  5. char s[99999];
  6. int main()
  7. {
  8. freopen("computer.in","r",stdin);
  9. freopen("computer.out","w",stdout);
  10. cin.getline(s,99998);
  11. int i,j;
  12. int len=strlen(s);
  13. for(i=0;i<len;i++)
  14. if(s[i]=='=') break;
  15. int d=i; //找=号的位置
  16. //char ans[99999];
  17. i=0;
  18. while(s[i]=='-'||s[i]=='+'||s[i]=='='|| ('0'<=s[i]&&s[i]<='9'))
  19. i++;
  20. char a = s[i];
  21. //cout<<a; 找未知数
  22. //cout<<d;
  23. int l=0,r=0,book[99999]={0};
  24. for(i=0;i<d;i++)
  25. {
  26. if(s[i]==a){
  27. int findn=i-1,temp=0,cheng=1;
  28. book[i]=1;
  29. while('0'<=s[findn] && s[findn]<='9' &&findn>=0)
  30. {temp+=(s[findn]-48)*cheng; cheng*=10;book[findn]=1;findn--;}
  31. if(s[findn]=='-' && findn>=0) {book[findn]=1;l-=temp;}
  32. if(s[findn]=='+' && findn>=0) {l+=temp;book[findn]=1;}
  33. if(findn==-1) l+=temp;
  34. }
  35. }
  36. for(i=d+1;i<len;i++)
  37. {
  38. if(s[i]==a){
  39. int findn=i-1,temp=0,cheng=1;book[i]=1;
  40. while('0'<=s[findn] && s[findn]<='9' && findn>=d)
  41. {temp+=(s[findn]-48)*cheng; cheng*=10;book[findn]=1;findn--;}
  42. if(s[findn]=='-' && findn>=0) {book[findn]=1;l+=temp;}
  43. if(s[findn]=='+' && findn>=0) {l-=temp;book[findn]=1;}
  44. if(findn==d) l-=temp;
  45. }
  46. }
  47. //cout<<l;
  48. for(i=d;i>=0;i--)
  49. {
  50. int findn;
  51. if('0'<=s[i] && s[i]<='9'&& book[i]==0){
  52. int temp=0,cheng=1;findn=i;
  53. while('0'<=s[findn] && s[findn]<='9' && findn>=0 )
  54. {temp+=(s[findn]-48)*cheng; cheng*=10;findn--;}
  55. if(s[findn]=='-' && findn>=0) r+=temp;
  56. if((s[findn]=='+' && findn>=0) || findn==-1) r-=temp;
  57. i=findn;
  58. }
  59. if(findn==-1) break;
  60. }
  61. for(i=len-1;i>d;i--)
  62. {
  63. int findn;
  64. if('0'<=s[i] && s[i]<='9'&& book[i]==0){
  65. int temp=0,cheng=1;findn=i;
  66. while('0'<=s[findn] && s[findn]<='9' && findn>=d )
  67. {temp+=(s[findn]-48)*cheng; cheng*=10;findn--;}
  68. if(s[findn]=='-' && findn>=0) r-=temp;
  69. if((s[findn]=='+' && findn>=0) || findn==-1) r+=temp;
  70. i=findn;
  71. }
  72. if(findn==d) break;
  73. }
  74. //cout<<r;
  75. double ans=(double)(r)/(double)(l);
  76. cout<<a<<"=";
  77. printf("%.3lf",ans);
  78. }