题意:

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

分析:

首先紫书上的公式是错的,不过根据书上提供的思路很容易稍加修改得到正确答案!

然后推公式吧,这里用到平面图的欧拉公式,V - E + F = 2,其中V表示顶点个数,E表示边的个数,F表示面的块数。

减去最外面的无限大的面,所求ans = E - V + 1

假设n≥4,从圆周上的一个点出发枚举一条对角线,左边有i个点,右边有n-2-i个点,将左右两边的点两两相连,就在这条对角线上得到个交点。每个交点被重复计算4次,再加上圆周上的n个点,所以

接下来E也很好计算,一条对角线有个交点,所以就有条边,而这里要注意,每条边是被重复计算2次的。再加上圆周被n个点分隔开的n条边和n个点相邻两点的连线有n条边,所以

然后再根据这两个公式

化简一下得到

后来发现,这道题还需要高精度,于是乎我傻乎乎地写了高精度加法和乘法,后来发现还需要除法,除法实在不会写。又想到lw学长整理过Java的BigInteger类的一些相关东西(工具」 Java总结 Version1.0),于是从没接触过Java的我,从安装Java JDK开始,怒学一下午Java,终于把这道题A了。不说了,我好累,不过也很欣慰。

 import java.io.*;
import java.util.*;
import java.math.*; public class Main
{
static PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out))); public static void main(String args[]) throws IOException
{
Scanner cin=new Scanner(System.in);
int kase = cin.nextInt();
for(int c = 1; c <= kase; ++c)
{
BigInteger ans = BigInteger.valueOf(1);
String s = cin.next();
BigInteger n = new BigInteger(s);
BigInteger temp = new BigInteger(s);
//System.out.println("temp = " + temp);
temp = temp.multiply(temp.subtract(new BigInteger("1")));
//System.out.println("temp = " + temp);
temp = temp.divide(new BigInteger("2"));
//System.out.println("temp = " + temp);
ans = ans.add(temp);
temp = temp.multiply(n.subtract(new BigInteger("2")));
temp = temp.multiply(n.subtract(new BigInteger("3")));
temp = temp.divide(new BigInteger("12"));
ans = ans.add(temp);
System.out.println(ans);
}
}
}

慢吞吞的Java君

UVa 10213 (欧拉公式+Java大数) How Many Pieces of Land ?的更多相关文章

  1. HDU4762(JAVA大数)

    Cut the Cake Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  2. Java 大数、高精度模板

    介绍: java中用于操作大数的类主要有两个,一个是BigInteger,代表大整数类用于对大整数进行操作,另一个是BigDecimal,代表高精度类,用于对比较大或精度比较高的浮点型数据进行操作.因 ...

  3. java大数

    java大数还是很好用的! 基本加入: import java.math.BigInteger; import jave.math.BigDecimal; 分别是大数和大浮点数. 首先读入可以用: S ...

  4. JAVA大数运算

    java大数是个好东西,用起来方便,代码短. 代码如下: import java.util.*; import java.math.*; public class Main { public stat ...

  5. java大数总结【转】

    java大数(2013长春网络赛)--hdu4762总结一下:1.java提交类要写Main.2.读取大数. Scanner read=new Scanner(System.in); BigInteg ...

  6. HDU5047Sawtooth(java大数)

    HDU5047Sawtooth(java大数) 题目链接 题目大意:在一个矩形内画n个"M".问如何画可以把这个矩形分成最多的区域. 给出这个区域的数目. 解题思路:最好的方式就是 ...

  7. JAVA大数类

    JAVA大数类api http://man.ddvip.com/program/java_api_zh/java/math/BigInteger.html#method_summary 不仅仅只能查J ...

  8. ZOJ3477&JAVA大数类

    转:http://blog.csdn.net/sunkun2013/article/details/11822927 import java.util.*; import java.math.BigI ...

  9. 多校第五场 归并排序+暴力矩阵乘+模拟+java大数&amp;记忆化递归

    HDU 4911 Inversion 考点:归并排序 思路:这题呀比赛的时候忘了知道能够用归并排序算出逆序数,可是忘了归并排序的实质了.然后不会做-- 由于看到题上说是相邻的两个数才干交换的时候.感觉 ...

随机推荐

  1. 【面试题】Https

    https原理, 我很难一下子记住,   https=http+ssl 先说http,  基于tcp/IP协议 传输,有三次握手 http://blog.csdn*net/xubo_zhang/art ...

  2. String声明为NULL和""的区别

    代码虐我千百遍,我待代码如初恋. String 声明为 NULL 则声明了一个变量不指向任何一块地址,则 length()会出现错误. 声明为"",则是一个长度为0的字符串.

  3. (转)为什么adrl r2,mem_cfg_val这里不用ldr r2,=mem_cfg_val

    网址:http://blog.csdn.net/glorin/article/details/6327083 memsetup:mov r1, #MEM_CTL_BASEadrl r2,mem_cfg ...

  4. Automotive Security的一些资料和心得(1):Security Engineering

    陆续更新一些最近在Automotive Security方面的资料和心得. 1. Overview 1.1. Software Engineering Process PLC-Phases: Intr ...

  5. MyISAM读写并发优化

    MyISAM在读操作占主导的情况下是很高效的.可一旦出现大量的读写并发,同InnoDB相比,MyISAM的效率就会直线下降,而 且,MyISAM和InnoDB的数据存储方式也有显著不同:通常,在MyI ...

  6. 1020: [SHOI2008]安全的航线flight - BZOJ

    Description在设计航线的时候,安全是一个很重要的问题.首先,最重要的是应采取一切措施确保飞行不会发生任何事故,但同时也需要做好最坏的打算,一旦事故发生,就要确保乘客有尽量高的生还几率.当飞机 ...

  7. eclipse(Version: Neon Release (4.6.0))安装hibernate tools

    这里需要说明的是,hibernate tools是jboss推出的. eclipse——>Eclipse Marketplace... 输入jboss-tools进行搜索 选择jboss too ...

  8. Usermod 命令详解

    参考资料:usermod manpage usermod - 修改用户帐户信息 modify a user account usermod [options] user_name usermod 命令 ...

  9. bzoj 2876: [Noi2012]骑行川藏 拉格朗日数乘

    2876: [Noi2012]骑行川藏 Time Limit: 20 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 1033  Solved: ...

  10. spoj 247

    不管行列   总是先切割切割费用大的  代码比较烂 ...... #include <iostream> #include <cstdio> #include <cstr ...