UPC 组队训练 5215 Fence Building(欧拉示性数)

这里写图片描述
题意:给一个圆,圆上有N个点,N个点两两连成一条直线,问最多能把这个圆分成几部分。
根据欧拉示性数 常数2=V(点个数)+F(面个数)-E(边条数)。
链接:对欧式性数的解释
得到公式:F=C(n 2)+C(n,4)+1;
链接:对公式的证明
由于取模运算,有对除法的取模运算,需要用到逆元
(a + b) % p = (a%p + b%p) %p (对)
(a - b) % p = (a%p - b%p) %p (对)
(a * b) % p = (a%p * b%p) %p (对)
(a / b) % p = (a%p / b%p) %p (错)
链接:取模运算总结
最后Java大数运算AC,这里要将乘法拆开分部运算,否则Java会超时。

import java.util.*;
import java.math.*;
public class Main {

    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int t;
        t=in.nextInt();
        BigInteger n,a,b,sum,m,s,f,p,q,r;
        m=BigInteger.valueOf(1000000007);
        s=BigInteger.valueOf(2);
        f=BigInteger.valueOf(24);
        p=BigInteger.valueOf(1);
        r=BigInteger.valueOf(3);
        for(int i=1;i<=t;i++)
        {
            n=in.nextBigInteger();
            a=n.multiply(n.subtract(p));
            a=a.divide(s);
            b=n.multiply(n.subtract(p));
            b=b.multiply(n.subtract(s));
            b=b.multiply(n.subtract(r));
            b=b.divide(f);
            sum=a.add(b).add(p);
            BigInteger modd = sum.mod(m);
            System.out.print("Case #");
            System.out.print(i);
            System.out.print(": ");
            System.out.println(modd);
        }
    }  
}
版权声明:本文为a17865569022原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a17865569022/article/details/81913494

智能推荐

Fence Building UVALive - 8471 2017乌鲁木齐区域赛D题

计蒜客题目          一道组队赛题目,当时猜着是有什么规律,但是我们都不太擅长找规律,gg的一道题,今天补题时第一次了解到欧拉定理,这道题目就是用欧拉定理做的。 欧拉公式:V-E+F=2.其中V是顶点(即所有线段的断点数加上交点数),E是边数(即n段椭圆弧加上这些线段被切成的段数),F是面数(即土地块数加上椭圆...

【字符串哈希】UPC Contest2569 - 2020年秋季组队训练赛第六场 G:Typo

问题 G: Typo 时间限制: 10 S e c 10 Sec 10Sec 内存限制: 128 M B 128 MB 128MB 题目描述 It is now far into the future and human civilization is ancient history. Archaeologists from a distant planet have recently disco...

【DFS&反向建图&记忆化搜索】UPC Contest2592 - 2020年秋季组队训练赛第十四场 问题 D: Mysterious Treasure

问题 D: Mysterious Treasure 时间限制: 1 Sec 内存限制: 128 MB 题目描述 WNJXYK and DIDIDI is playing a game. DIDIDI draws a directed graph G on the paper which contains n points, m directed edges and no cycle. WNJXYK...

upc 2020春季个人训练赛第九场

问题 A: 水题大战 题目描述 小Q最近正在给一个比赛出题目,他认为第一题应该是老少皆宜的。于是,他出了一个题目,然后让n个人来评价这个题目。 每个人会对这个题目做出评价,有难和简单两种,1表示难,0表示简单。如果所有人都认为这个题目简单,那么这个题目就是简单的,否则这个题目就是难的。 输入 输入第一行是一个正整数T,表示数据的组数。 接下来对于每组数据,先输入一个正整数n,表示参与评价的人的数量...

(大组合数)D. Fence Building ------ ACM-ICPC 2017 Asia Urumqi

传送门: D.Fence Building Farmer John owns a farm. He first builds a circle fence. Then, he will choose n points and build some straight fences connecting them. Next, he will feed a cow in each regio...

猜你喜欢

web安全简易规范123

web安全,大公司往往有专门的安全开发流程去保证,有专门的安全团队去维护,而对于中小网络公司,本身体量小,开发同时兼带运维工作,时间精力有限,但是,同样需要做一些力所能及的必要的事情。有时候,安全威胁并不是因为你的防盗窗被人撬开了,而是你晚上睡觉的时候忘了关门,而关上门对开发来说也许只是举手之劳。 1、不要用root,确定使用的中间件和框架是否默认打开了后门 我们总会在线上使用部署一些中间件、开源...

css弹性盒模型详解----justify-content

本篇文章详细介绍justify-content 效果演示如下: 效果演示如下: 效果演示如下: 效果演示如下: 效果演示如下...

html5拖放--15行js代码实现两个div内容互换

本文首发于我的个人博客:http://cherryblog.site/ ,欢迎大家前去参观 本文项目地址,sortable插件地址:https://github.com/sunshine940326/sortable demo地址:https://github.com/sunshine940326/drag 在写我们后台的管理程序中需要有一个拖放的功能,然后我们有一个这样的功能,实现11个固定且大...

git切换分支报错,不管什么标题名字,都报非法字符,所以就不起名字了。

切换分支的时候,报了标题这么个错误,error: ”xxx did not match any file(s) known to git. 看见不能切换分支,我首先 git status 查看了一下当前状态,如下图 然后,就会发现,其实我的这个错误非常明显,就是在我的 beat 分支下有文件修改,所以切换不了。ok,解决方法: 1. 如果修改的这些文件没什么用,完全可以删除。(我这儿的...

Oracle分析函数之LEAD和LAG实际应用

Oracle分析函数之LEAD和LAG实际应用 在前几天的工作中按照客户的需求,需要对客户信息进行数据分析,即某人存在多个状态的账号,将客户信息账号状态分析出结果,和客户确认汇报,根据保留规则,保留唯一账号,以保证程序可用性。起初,根据聚合函数进行查询分析,需要写一大串的SQL,即不美观又复杂,很容易产生错误。后续想到Oracle分析函数中的lead和lag,SQL简洁了很多且容易产生报告数据。 ...