文章标题 SPOJ PHT : Pigeonhole Tower(二分)

原创 2017年01月04日 00:05:11

Pigeonhole Tower

Pigeon SSNA want to build a tower with some wood walls. Let’s describe the tower they want to make:

A Tower can consist of different number of level.
If a tower contain L levels then 1st level must contain L holes , 2nd level L-1 , 3rd level L-2 ….. L level contain 1 hole .
Each room contain 3 wood walls.
See the picture below:

3 level 4level
3 Level Tower 4 Level tower
Now pigeon SSNA has n wood walls. What is maximum number of level he can made.

Input

Input starts with an integer T (≤ 100000), denoting the number of test cases.

Each case starts with a line containing an integer n (1 ≤ n ≤ 1012)

Output

For each case of input you have to print the case number and expected answer.

Sample Input

Output for Sample Input

2
15
24
Case 1: 3
Case 2: 4
题意: 给你n个木棒,然后看能堆成几层。
分析:通过看规律可知每层的数目是一个等差数列,所以对于所给数目n可以通过二分查找n所在的区间,通过所给数据可知,层数在1~1*10^6之间。
代码:

#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
#include<vector>
#include<math.h>
#include<map>
#include<queue> 
#include<algorithm>
using namespace std;
const int inf = 0x3f3f3f3f;
long long n;
int bs(){
    long long lo=1,hi=10e6;
    long long mid;
    while (lo<hi){
        mid=(hi+lo)/2;
        //如果找到区间就直接返回
        if (n<mid*(mid+2)&&n>=(mid-1)*(mid+1)) return mid-1;
        if (n>=mid*(mid+2))lo=mid;
        else hi=mid;
    }
}
int main ()
{
    int t;
    scanf ("%d",&t);
    int cnt=1;
    while (t--){
        scanf ("%lld",&n);
        if (n<3){
            printf ("Case %d: 0\n",cnt++);
            continue;
        }
        int ans=bs();
        printf ("Case %d: %d\n",cnt++,ans);
    }   
    return 0;
}

SPOJ - PHT【二分+预处理】

Pigeon SSNA want to build a tower with some wood walls. Let's describe the tower they want to make: ...
  • mengxiang000000
  • mengxiang000000
  • 2016年12月26日 19:08
  • 210

SPOJ PHT【二分】+SPOJ INUM【最小/大值重复】

BC 两道其实都是水 没有完整地想好直接就码出事情。wa了一次以后要找bug,找完要把思路理的非常清楚 SPOJ PHT【二分】 #include using namespace std; ...
  • KEYboarderQQ
  • KEYboarderQQ
  • 2016年12月25日 00:08
  • 228

用java提取不同类型的文章标题就要设计出不同的正则表达式

用java中提取不同类型的文本目录要设计出不同的正则表达式         最近,我从网上下载了一个用java编写的用正则表达式从文本文件中批量提取文本目录的程序。用该程序,我从《神墓》这本章回小说...
  • myhrrjava
  • myhrrjava
  • 2016年10月28日 10:29
  • 444

文章标题--再识HTML5

HTML5定稿一周年,你必须要重新认识HTML5了 2015-11-25 10:46 by 副主编 mengyidan1988 评论(8) 有6049人浏览 html5 facebook 声明:...
  • u014726937
  • u014726937
  • 2016年03月01日 13:11
  • 505

在线项目协调工具tower.im使用小结

背景:使用tower.im是很偶然的一个机会,正好看到蝉游记@纯银 的推荐,手头有个产品需北京、成都同事一起协调开发,就申请了45天的试用。 tower.im作为一个轻量SaaS应用,强调简单、好...
  • wildboy2001
  • wildboy2001
  • 2013年08月18日 18:06
  • 11144

修改DEDECMS文章标题长度,解决DEDECMS文章标题显示不全

在用dede调用列表标题出来的时候,会发现标题文字字数显示不完全,那是因为dede默认标题出来长度是30个字符,为了让标题显示完整,要做以下修改!1、进入后台–系统–系统设置–系统基本参数–其他选项–...
  • yxwmzouzou
  • yxwmzouzou
  • 2015年04月29日 11:25
  • 10164

Tower中国用户适配版本--cTower手机地面站3.2.3发布

最近折腾无人机,发现官方的Tower手机地面站在很多国产手机上不可用,没有谷歌gms服务啊,于是花了几天自己改了一个版本,欢迎广大模友试用。Tower is a Ground Control Stat...
  • offbye
  • offbye
  • 2016年08月03日 20:26
  • 4681

基于标题分类的文章主题句识别与提取方法

基于标题分类的主题句提取方法 基于标题分类的主题句提取方法可描述为: 给定一篇新闻报道, 计算标题与新闻主题词集的相似度, 判断标题是否具有提示性。对于提示性标题,抽取新闻报道中与其最相似的句子作为主...
  • lihaitao000
  • lihaitao000
  • 2016年06月24日 17:53
  • 3040

Ansible-Tower快速入门-1.概览【翻译】

概览 Tower Ansible-Tower是作为Ansible的一个web接口界面,并采用REST API作为端点接入。通过使用开源的orchestration engine,无论是与你的团...
  • u011537073
  • u011537073
  • 2017年06月07日 10:51
  • 706

JavaScript点击标题折叠文章内容

还是在写长博客的时候想到的需求,在文章中点击等标签的时候自动折叠该标题下的所有子标题和正文。我想到了利用jQuery来实现,给所有标题写加上一个类“art-title”,再在js文件中添加点击事件。然...
  • AeroYoung
  • AeroYoung
  • 2015年09月01日 15:37
  • 727
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:文章标题 SPOJ PHT : Pigeonhole Tower(二分)
举报原因:
原因补充:

(最多只允许输入30个字)