题意:一块圆形土地,在圆周上选n个点,然后两两连线,问把这块土地分成多少块?

析:这个题用的是欧拉公式,在平面图中,V-E+F=2,其中V是顶点数,E是边数,F是面数。对于这个题只要计算V和E就好。

我们从一个顶点开始枚举对角线,这条线左边有 i 个点,那么右边有 n-i-2 个点,那么两边的连线在这条对角线上形成 i * (n-i-2) 个交点,得到 i * (n-i-2) + 1条线段,然而每个交点,

重复计算了四次,每条线段被重复计算了二次,所以总数就是,V 加 n 的意思就是加上原来的 n 个顶点,E 加 2n的意思就是,

先加原来 n 个点相邻的边数,然后再加上这个椭圆被这个圆分成的n条边,最后就是在总面数再减去那一个“无限面”。这个公式不要用循环来算,要化简公式,最后结果还是挺简单的。

ans = n * (n-1) * (n-2) * (n-3)/24 + n * (n-3)/2 + n + 1。

代码如下:

import java.math.BigInteger;
import java.util.Scanner; public class Main { public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int T;
T = cin.nextInt();
for(int i = 0; i < T; ++i){
BigInteger n = cin.nextBigInteger();
BigInteger n1 = n.subtract(BigInteger.ONE);
BigInteger n2 = n1.subtract(BigInteger.ONE);
BigInteger n3 = n2.subtract(BigInteger.ONE); BigInteger a = n.multiply(n1).multiply(n2).multiply(n3).divide(BigInteger.valueOf(24));
BigInteger b = n.multiply(n3).divide(BigInteger.valueOf(2));
BigInteger ans = a.add(b).add(n).add(BigInteger.ONE);
System.out.println(ans);
}
} }

原文链接:http://www.cnblogs.com/dwtfukgv/p/5845746.html

最新文章

  1. windows消息机制(MFC)
  2. ural 1146. Maximum Sum
  3. C#打开摄像头抓取照片然后退出
  4. BZOJ3739 : DZY loves math VIII
  5. android View 自动 GONE 问题
  6. 利用glassfish4任意文件读取拿权限的一些思路
  7. SQL Server数据库文件存储目录转移
  8. css 改变scroll样式
  9. sql--关于exec和sp_execute
  10. MSF连环攻击实验
  11. docker入门【1】
  12. [转]sysctl -P 报错解决办法
  13. SLAM+语音机器人DIY系列:(三)感知与大脑——1.ydlidar-x4激光雷达
  14. Bootstrap日期和时间表单组件
  15. Vxlan学习笔记——原理
  16. JMeter3.0(三十八)图形化HTML报告中文乱码问题处理(转载)
  17. 表单设置 disabled 后无法传值到后台的解决办法
  18. struts2:图解action之HelloWorld示范(从action转到JSP)
  19. 启动其他APK的Activity方法 (转至http://www.cnblogs.com/lijunamneg/archive/2013/02/26/2934060.html)
  20. (技术分享) 解决 Firefox 显示“已阻止载入混合活动内容”的问题

热门文章

  1. Netty Bootstrap(图解)|秒懂
  2. Grasswire&amp;quot;草根连线&amp;quot;:Pinterest图片流+Reddit众包新闻门户
  3. uboot移植添加nfs支持
  4. ScrollView当显示超出当前页面时自动移动到最底端【转】
  5. Cocos2d-x中判断点击是否在触摸屏区域
  6. Codeforces 854B Maxim Buys an Apartment:贪心
  7. LoadRunner监控图表与配置(三)对系统与网络资源进行监控
  8. Win7系统中用anaconda配置tensorflow运行环境
  9. PHP中读写文件
  10. ICE 迁移64位安装问题