The number of diagonals of an n-gon is not less than N. What is the minimum possible value of n?

Input
The input file contains less than 1001 lines of inputs. Each line contains a positive integer N (N ≤ 1015) that indicates the minimum possible number of diagonals. Input is terminated by a line containing a zero. This line should not be processed.
Output
For each line of input produce one line of output, which contains the output serial number, and also the minimum possible value for n (Number of sides).
Sample Input
10
100
1000
0
Sample Output
Case 1: 7
Case 2: 16
Case 3: 47

问题链接:UVA10784 Diagonal
问题简述:给定整数n,计算多边形对角线条数超过这个数的最少边数。
问题分析:n条边的多边形,其对角线数量为n*(n-3)/ 2。可以用二分查找,或推导出不等式再试探。
程序说明:(略)
参考链接:(略)
题记:(略)

AC的C++语言程序如下:

/* UVA10784 Diagonal */#include <bits/stdc++.h>using namespace std;int main()
{long long n;int caseno = 0;while(~scanf("%lld", &n) && n) {long long ans = (3 + sqrt(8 * n + 9)) / 2;while(ans * (ans - 1) / 2 - ans < n) ans++;printf("Case %d: %d\n", ++caseno, ans);}return 0;
}

AC的C++语言程序(二分查找)如下:

/* UVA10784 Diagonal */#include <bits/stdc++.h>using namespace std;int bs(long long n)
{// n条边的多边形,其对角线数量为n*(n-3)/ 2。// 二分查找时right取比n*(n-3)/ 2开方值大的值// n <= 10^15long long left = 0, right = 100000000, mid;while(left < right) {mid = left + (right - left) / 2; // mid = (right - left) / 2if(mid * (mid - 3LL) / 2LL < n) left = mid + 1;else right = mid;}return right;
}int main()
{long long n;int caseno = 0;while(~scanf("%lld", &n) && n)printf("Case %d: %d\n", ++caseno, bs(n));return 0;
}

UVA10784 Diagonal【数学+二分查找】相关推荐

  1. D. Very Suspicious(数学 + 二分查找)

    大致题意 : 对于一个无限的六边形网格进行划线, 要求加的线必须平行六边形的边, 给出查询n问要构造n个小三角型最少要划几条线 思路 : 对于n<=6要划的三条线是固定的画法可以特判一下, 之后 ...

  2. 【每日一题Day35】LC878第N个神奇数字 | 二分查找 找规律 + 数学

    第N个神奇数字[LC878] 一个正整数如果能被 a 或 b 整除,那么它是神奇的. 给定三个整数 n , a , b ,返回第 n 个神奇的数字.因为答案可能很大,所以返回答案 对 109 + 7 ...

  3. LeetCode-878. 第 N 个神奇数字【数学,二分查找,找规律】

    LeetCode-878. 第 N 个神奇数字[数学,二分查找,找规律] 题目描述: 解题思路一:二分答案+容斥原理.给定一个上下界,然后依次增大下界或者减小上界,直到只剩一个答案.容斥原理是,加上两 ...

  4. 878. 第 N 个神奇数字(二分查找+数学)| 1819. 序列中不同最大公约数的数目(枚举+数学)

    878. 第 N 个神奇数字 一个正整数如果能被 a 或 b 整除,那么它是神奇的. 给定三个整数 n , a , b ,返回第 n 个神奇的数字.因为答案可能很大,所以返回答案 对 109 + 7  ...

  5. 二分查找的ASL公式及其数学推算

    突然遇到二分查找的ASL公式,但是网上似乎推算不多,我来写一下过程. 二分查找的ASL(平均查找次数)为: 计算过程如下所示: 其中是ASL括号内式子 当n大于50时,ASL约等于. 打草稿写的,比较 ...

  6. 六十七、二分查找算法及其四个变形问题

    @Author:Runsen 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化. ---- Runsen 文章目录 二分法查找 二分查找的变形问题 查找第一个等于给定值的元素 ...

  7. 六十八、快速幂算法、牛顿迭代法、累加数组+二分查找的变形

    @Author:Runsen 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化. ---- Runsen 上次介绍了二分查找算法及其四个变形问题,下面介绍二分法常用的场景和典 ...

  8. c语言二分法查找一个数_算法简解-二分查找

    读书不记录=没读,始终是我的信条·····最近因为要参加竞赛,发现自己真的差的很远,所以打算重新开始学习一遍算法及AI的相关数学知识,相信很多人都是闻数学,理工科色变,之前也是觉得上数理课太难了,真的 ...

  9. problem k: 查找某一个数_quot;细节魔鬼quot; 二分查找

    ❝ 二分查找,是一个高效,实用,且易理解的一个查找算法, 通常时间复杂度为O(lgn).局限性在于,待查找对象必须为有序的数组:数据量过小,优势不明显,数据量过大,数组大小受限于内存. 除此之外,二分 ...

最新文章

  1. HALCON查找圆心
  2. vim 用次数做简单的算术运算(笔记)
  3. 洛谷P1966 火柴排队(逆序对)
  4. hssfworkbook 单元格合并后宽度不生效_Excel表格“假”合并,有多牛?
  5. python管理工具ports_Python options.port方法代码示例
  6. C语言的一些误用和知识总结
  7. SQL Server 当表分区遇上唯一约束(转载)
  8. ios开发收藏按钮_即刻APP收藏按钮的实现
  9. Java 学生成绩管理系统(基于GUI和数据库的建立)
  10. 大数据采集与预处理技术
  11. java log4j jar下载_Apache Log4j1.2jar包
  12. 候鸟浏览器cookie登录教程
  13. APP内跳转QQ和陌生人聊天实现客服功能
  14. UVALive6578-Trending Topic
  15. ​FH5202原厂2A开关式同步降压型锂电池充电电路IC
  16. PDF电子书制作书签目录全过程
  17. java的 oo_Java OO 知识总结
  18. 《求医不如求己》1,2,3全集下载(附人体穴位图)
  19. es教程——地图搜索
  20. Nuxt作为主应用集成qiankun,SKIP_BECAUSE_BROKEN报错

热门文章

  1. Android Studio + TensorFlow lite 0.1.7
  2. GDAL虚拟文件简介
  3. Unity NGUI 制作URL超链接点击打开网页
  4. 【java学习之路】数据库连接JDBC
  5. 解决Caused by: GSSException: (Mechanism level: Failed to find any Kerberos tgt)
  6. Python 之 函数基础
  7. 循环冗余校验 使用及记忆方法
  8. html生成word附带图片_生成词云的几种方式对比
  9. 数据挖掘:模型选择——KNN
  10. Tableau可视化学习笔记:day13-14