UVa 10784 - Diagonal

来源:互联网 发布:linux系统jdk1.8下载 编辑:程序博客网 时间:2024/05/22 14:33

题目:给你一个数字,输出多边形对角线条数超过这个数字的最少边数。

分析:简单题。n边形的对角线条数为:n*(n-3)/ 2  { 除了相邻顶点和自己之间两点构成边 }

                            直接二分求解即可。

说明:也可以求平方根,向下寻找。

#include <iostream>#include <cstdlib>using namespace std;int bs( long long key ){int l = 0,r = 50000000,mid;while ( l < r ) {mid = l+(r-l)/2;if ( 0LL+mid*(mid-3LL)/2LL < key )l = mid+1;else r = mid;}return r;}int main(){long long v;int t = 1;while ( cin >> v && v ) cout << "Case " << t ++ << ": " << bs( v ) << endl;;return 0;}

0 0
原创粉丝点击