赞
踩
目录
由“在第 i 轮获胜会获得 i 分,没有平局。”可知,总分总是数列(1,1+2,1+2+3...)中的一个数
可以写出如下核心代码:
- long long a,b;//int数字上限为2³¹-1,本题数据上限为2³²-1,故应用long long
- cin>>a>>b;
- long long sum=a+b;
- int x=1;
- while (sum-x>=0){
- sum-=x;
- x++;
- }x--;
- if(sum==0){cout<<x;
- if(a)cout<<' ';//如果a不为0则输出空格
-
- }
- else {
- cout<<"No";
- return 0;
- }//求是否位于等差数列内

接下来判断ljcc赢的局数
核心代码如下:
- for(int i=x;i>0;i--){//切记从大到小循环
- if(a>=i){
- a-=i;
- cout<<i;
- flag=1;
- }
- if(!a)break;//如果剩余分数为0跳出循环
- else if(flag) cout<<' ';//非行末则输出空格
- flag=0;
- }
注意:1.此题必须开long long!!!
2.要从大到小循环,不能从小到大循环!!!
- #include<iostream>
- using namespace std;
- int main{
- long long a,b;//int数字上限为2³¹-1,本题数据上限为2³²-1,故应用long long
- cin>>a>>b;
- long long sum=a+b;
- int x=1;
- while (sum-x>=0){
- sum-=x;
- x++;
- }x--;
- if(sum==0){cout<<x;
- if(a)cout<<' ';//如果a不为0则输出空格
-
- }
- else {
- cout<<"No";
- return 0;
- }
- //求是否位于等差数列内
- for(int i=x;i>0;i--){//切记从大到小循环
- if(a>=i){
- a-=i;
- cout<<i;
- flag=1;
- }
- if(!a)break;//如果剩余分数为0跳出循环
- else if(flag) cout<<' ';//非行末则输出空格
- flag=0;
- }
-
- return 0;
- }

本蒟蒻又水了一篇题解qwq
都看到这里了,还不点关注吗
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。