文章标题 SPOJ PHT : Pigeonhole Tower(二分)
2017-01-04 00:05
477 查看
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 Pigeonhole Tower 预处理+二分 || 找规律
- 文章标题HDU 2141:Can you find it?(二分)
- 文章标题 CSU 1817 : Bones’s Battery(Floyd+二分)
- 文章标题HDU2899:Strange fuction?(二分+精度)
- 文章标题 HDU 1969 : Pie(二分)
- 文章标题 codeforces 598F :Gourmet and Banquet(贪心+二分)
- 文章标题 HDU 4791 :Alice's Print Service(二分+dp)
- 文章标题 HDU 2199 : Can you solve this equation?(二分)
- 文章标题 coderforces 514D : R2D2 and Droid Army (二分+RMQ预处理)
- 文章标题 codeforce 812C Sagheer and Nubian Market(二分)
- 文章标题 codeforces 75C:Modified GCD (二分+最大公因数)
- 文章标题POJ 2785:4 Values whose Sum is 0?(二分)
- 文章标题 POJ 1905 : Expanding Rods (二分)
- 文章标题 POJ 3272 : Monthly Expense (二分)
- B - Pigeonhole Tower
- 文章标题 CSU 1913 (线段树+二分答案)
- 文章标题
- 文章标题
- 文章标题
- 文章标题