UVa 10213 (欧拉公式+Java大数) How Many Pieces of Land ?
题意:
一块圆形土地,在圆周上选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 ?的更多相关文章
- HDU4762(JAVA大数)
Cut the Cake Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- Java 大数、高精度模板
介绍: java中用于操作大数的类主要有两个,一个是BigInteger,代表大整数类用于对大整数进行操作,另一个是BigDecimal,代表高精度类,用于对比较大或精度比较高的浮点型数据进行操作.因 ...
- java大数
java大数还是很好用的! 基本加入: import java.math.BigInteger; import jave.math.BigDecimal; 分别是大数和大浮点数. 首先读入可以用: S ...
- JAVA大数运算
java大数是个好东西,用起来方便,代码短. 代码如下: import java.util.*; import java.math.*; public class Main { public stat ...
- java大数总结【转】
java大数(2013长春网络赛)--hdu4762总结一下:1.java提交类要写Main.2.读取大数. Scanner read=new Scanner(System.in); BigInteg ...
- HDU5047Sawtooth(java大数)
HDU5047Sawtooth(java大数) 题目链接 题目大意:在一个矩形内画n个"M".问如何画可以把这个矩形分成最多的区域. 给出这个区域的数目. 解题思路:最好的方式就是 ...
- JAVA大数类
JAVA大数类api http://man.ddvip.com/program/java_api_zh/java/math/BigInteger.html#method_summary 不仅仅只能查J ...
- ZOJ3477&JAVA大数类
转:http://blog.csdn.net/sunkun2013/article/details/11822927 import java.util.*; import java.math.BigI ...
- 多校第五场 归并排序+暴力矩阵乘+模拟+java大数&记忆化递归
HDU 4911 Inversion 考点:归并排序 思路:这题呀比赛的时候忘了知道能够用归并排序算出逆序数,可是忘了归并排序的实质了.然后不会做-- 由于看到题上说是相邻的两个数才干交换的时候.感觉 ...
随机推荐
- 【面试题】Https
https原理, 我很难一下子记住, https=http+ssl 先说http, 基于tcp/IP协议 传输,有三次握手 http://blog.csdn*net/xubo_zhang/art ...
- String声明为NULL和""的区别
代码虐我千百遍,我待代码如初恋. String 声明为 NULL 则声明了一个变量不指向任何一块地址,则 length()会出现错误. 声明为"",则是一个长度为0的字符串.
- (转)为什么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 ...
- Automotive Security的一些资料和心得(1):Security Engineering
陆续更新一些最近在Automotive Security方面的资料和心得. 1. Overview 1.1. Software Engineering Process PLC-Phases: Intr ...
- MyISAM读写并发优化
MyISAM在读操作占主导的情况下是很高效的.可一旦出现大量的读写并发,同InnoDB相比,MyISAM的效率就会直线下降,而 且,MyISAM和InnoDB的数据存储方式也有显著不同:通常,在MyI ...
- 1020: [SHOI2008]安全的航线flight - BZOJ
Description在设计航线的时候,安全是一个很重要的问题.首先,最重要的是应采取一切措施确保飞行不会发生任何事故,但同时也需要做好最坏的打算,一旦事故发生,就要确保乘客有尽量高的生还几率.当飞机 ...
- eclipse(Version: Neon Release (4.6.0))安装hibernate tools
这里需要说明的是,hibernate tools是jboss推出的. eclipse——>Eclipse Marketplace... 输入jboss-tools进行搜索 选择jboss too ...
- Usermod 命令详解
参考资料:usermod manpage usermod - 修改用户帐户信息 modify a user account usermod [options] user_name usermod 命令 ...
- bzoj 2876: [Noi2012]骑行川藏 拉格朗日数乘
2876: [Noi2012]骑行川藏 Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 1033 Solved: ...
- spoj 247
不管行列 总是先切割切割费用大的 代码比较烂 ...... #include <iostream> #include <cstdio> #include <cstr ...