我没有用什么花里胡哨的方法,就是一点点判断,先上代码

  1. n=int(input())
  2. L=[int(i) for i in input().split()]
  3. re=''
  4. L=L[::-1]
  5. for i in range(n,-1,-1):
  6. if i==n:
  7. if L[i]==0:
  8. continue
  9. elif i==1:
  10. if L[i]==1:
  11. re+='x'
  12. elif L[i]==-1:
  13. re+='-x'
  14. else:
  15. re+=str(L[i])+'x'
  16. else:
  17. if L[i]==1:
  18. re+='x^'+str(i)
  19. elif L[i]==-1:
  20. re+="-x^"+str(i)
  21. else:
  22. re+=str(L[i])+'x^'+str(i)
  23. elif i==1:
  24. if L[i]==-1:
  25. re+='-x'
  26. elif L[i]==1:
  27. re+='+x'
  28. elif L[i]<0:
  29. re+=str(L[i])+'x'
  30. elif L[i]==0:
  31. continue
  32. else:
  33. re+='+'+str(L[i])+'x'
  34. elif i==0:
  35. if L[0]<0 or re=='':
  36. re+=str(L[0])
  37. elif L[0]==0:
  38. continue
  39. else:
  40. re+='+'+str(L[0])
  41. else:
  42. if L[i]==-1:
  43. re+='-x^'+str(i)
  44. elif L[i]==1:
  45. re+='+x^'+str(i)
  46. elif L[i]<0:
  47. re+=str(L[i])+'x^'+str(i)
  48. elif L[i]==0:
  49. continue
  50. else:
  51. re+='+'+str(L[i])+'x^'+str(i)
  52. print(re)

这个代码可以过,我修改过很多次,从错误55%到36%到18%到AC 太不容易了 但是其实我觉得可以有更简单的方法,但是当时有些急眼了
说一下这个方法的注意事项,我只说它题目里没给到的
1.位置不同导致的特殊性,就像我第一层判断,先判断位置,再说别的
2.对于-1,1要单独拎出来说
3.首项可能为0,1.-1,首相次数可以是1次
注意了这几点就差不多了,多调几次,加油吧!!!

点赞(0)
 

6 分

2 人评分

 

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论