比赛 NOIP2015普及组练习 评测结果 AAAWAA
题目名称 增强的减法问题 最终得分 83
用户昵称 Aeons 运行时间 0.011 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2015-11-06 20:37:53
显示代码纯文本
  1. #include <fstream>
  2. #include <string>
  3. using namespace std;
  4. ifstream fin("sub.in");
  5. ofstream fout("sub.out");
  6. string sub(string a,string b)
  7. {
  8. int lx,ly,m[101],n[101],z[101],i,k,lmax;bool fu;
  9. string c;
  10. lx=a.length();ly=b.length();
  11. if(lx>ly)
  12. lmax=lx;
  13. else
  14. lmax=ly;
  15. if(lx<ly||(lx==ly&&a<b))
  16. {
  17. fu=true;c=a;a=b;b=c;k=lx;lx=ly;ly=k;
  18. }
  19. else
  20. fu=false;
  21. for(i=1;i<=lmax;i++)
  22. m[i]=n[i]=z[i]=0;
  23. for(i=lx-1;i>=0;i--)
  24. m[lx-i]=a[i]-'0';
  25. for(i=ly-1;i>=0;i--)
  26. n[ly-i]=b[i]-'0';
  27. for(i=1;i<=lmax;i++)
  28. {
  29. z[i]+=m[i]-n[i];
  30. if(z[i]<0)
  31. {
  32. z[i]+=10;
  33. z[i+1]-=1;
  34. }
  35. }
  36. while(z[lmax]==0&&lmax>0)
  37. if(z[lmax]==0)
  38. lmax--;
  39. c="";
  40. if(a==b)
  41. fout<<0<<endl;
  42. else
  43. {
  44. for(i=lmax;i>=1;i--)
  45. c+=char(z[i]+'0');
  46. }
  47. if(fu)
  48. c="-"+c;
  49. return c;
  50. }
  51. int main()
  52. {
  53. string x,y;
  54. fin>>x>>y;
  55. fout<<sub(x,y)<<endl;
  56. fin.close();
  57. fout.close();
  58. return 0;
  59. }