当前位置:   article > 正文

洛谷P7427玩游戏题解_洛谷打表p4727

洛谷打表p4727

目录

1.判断总分是否正确

2.求lijc赢的次数

3.注意事项&完整代码


1.判断总分是否正确

 由“在第 i 轮获胜会获得 i 分,没有平局。”可知,总分总是数列(1,1+2,1+2+3...)中的一个数

可以写出如下核心代码:

  1. long long a,b;//int数字上限为2³¹-1,本题数据上限为2³²-1,故应用long long
  2. cin>>a>>b;
  3. long long sum=a+b;
  4. int x=1;
  5. while (sum-x>=0){
  6. sum-=x;
  7. x++;
  8. }x--;
  9. if(sum==0){cout<<x;
  10. if(a)cout<<' ';//如果a不为0则输出空格
  11. }
  12. else {
  13. cout<<"No";
  14. return 0;
  15. }//求是否位于等差数列内

2.求lijc赢的次数

接下来判断ljcc赢的局数

核心代码如下:

  1. for(int i=x;i>0;i--){//切记从大到小循环
  2. if(a>=i){
  3. a-=i;
  4. cout<<i;
  5. flag=1;
  6. }
  7. if(!a)break;//如果剩余分数为0跳出循环
  8. else if(flag) cout<<' ';//非行末则输出空格
  9. flag=0;
  10. }

3.注意事项&完整代码

注意:1.此题必须开long long!!!

2.要从大到小循环,不能从小到大循环!!!

  1. #include<iostream>
  2. using namespace std;
  3. int main{
  4. long long a,b;//int数字上限为2³¹-1,本题数据上限为2³²-1,故应用long long
  5. cin>>a>>b;
  6. long long sum=a+b;
  7. int x=1;
  8. while (sum-x>=0){
  9. sum-=x;
  10. x++;
  11. }x--;
  12. if(sum==0){cout<<x;
  13. if(a)cout<<' ';//如果a不为0则输出空格
  14. }
  15. else {
  16. cout<<"No";
  17. return 0;
  18. }
  19. //求是否位于等差数列内
  20. for(int i=x;i>0;i--){//切记从大到小循环
  21. if(a>=i){
  22. a-=i;
  23. cout<<i;
  24. flag=1;
  25. }
  26. if(!a)break;//如果剩余分数为0跳出循环
  27. else if(flag) cout<<' ';//非行末则输出空格
  28. flag=0;
  29. }
  30. return 0;
  31. }

本蒟蒻又水了一篇题解qwq

都看到这里了,还不点关注吗

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/375379
推荐阅读
相关标签
  

闽ICP备14008679号