这道题思路很简单,设刚开始队伍数为d=2^p*x,其中x是奇数,则比赛场次n=(2^p-1)*x+(x-1)*x/2,然后从0开始枚举p的值,接着解一元二次方程x^2+(2^(p+1)-3)x-2*n=0,

易知此方程在0到10^9直接有且只有一个解。直接二分就行。

ps:这道题目数据很强,稍微有点错误就会出错。。。

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#define LL long long
using namespace std;
LL n;
LL getans(LL a,LL b,LL s)
{
LL mid,tmp;
while(a<b)
{
mid=(a+b)/2;
tmp=mid*mid-2*n+s*mid;
if(tmp==0)
{
if(mid%2==0)//必须为奇数
return -1;
return mid;
}
else if(tmp>0)
b=mid;
else
a=mid+1;
}
if(a*a-2*n+s*a==0&&(a&1))
return a;
return -1;
}
int main()
{
LL i,j;
while(scanf("%I64d",&n)==1)
{
LL tmp;
LL cur=2,p,last=0;
int flag=0;
while(1)
{
if(cur-3<n*2)
{
tmp=sqrt(2*n+0.5);
LL p=n*2/(cur-3);
if(p>0&&p<tmp)tmp=p;//p必须大于零
p=getans(0,tmp+3,cur-3);//这里刚开始时tmp+100,爆long long 了,TTT
if(p>0&&last!=cur/2*p)
{
printf("%I64d\n",cur/2*p);
flag=1;
last=cur/2*p;
}
}
else
break;
cur*=2;
}
if(!flag)printf("-1\n");
}
return 0;
}

最新文章

  1. NOIP2009 Hankson的趣味题
  2. AC日记——计算2的N次方 openjudge 1.6 12
  3. Ajax注册验证js代码
  4. C#转C++的一点分享
  5. iOS 知识点梳理
  6. jquery+php实现用户输入搜索内容时自动提示
  7. 【.NET基础】--委托、事件、线程(2)
  8. 第一次,触碰Web App项目,栽过的那些坑。
  9. JQ判断按钮,复选框是否选中
  10. Linux安装sonarQube
  11. WCF技术剖析之十二:数据契约(Data Contract)和数据契约序列化器(DataContractSerializer)
  12. [转]Metasploit的meterpreter黑客脚本列表
  13. Css Html 大风车
  14. Yii2 数据库操作汇总
  15. 基于vue-cli构建vue-router的入门级demo
  16. ASP.NET Core 的 `Core` 有几种写法?
  17. 程序猿最浪漫的表白,肯定会得到你的她——Jason niu 原文来自GitHub,本人已部分修改
  18. iis express添加虚拟目录
  19. jQuery 中的 39 个技巧【申明:来源于网络】
  20. django模板语言的注释

热门文章

  1. 仿OpenStack开发云计算管理软件
  2. 《Javascript权威指南》学习笔记之十二:数组、多维数组和符合数组(哈希映射)
  3. OC中多线程的一些概念
  4. 异步的两种写法: async 与 BeginInvoke
  5. Azure 云 Web 应用程序
  6. 多文件上传组件FineUploader使用心得
  7. windows/Linux下安装maven
  8. C语言指针和数组知识总结(上)
  9. axure制作项目符号列表样式
  10. window2003远程桌面“已达最大连接数”