5215: 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 region so that cows cannot play with each other without breaking the fences. In order to feed more cows, he also wants to have as many regions as possible. However, he is busy building fences now, so he needs your help to determine what is the maximum number of cows he can feed if he chooses these n points properly.

输入

The first line contains an integer 1 ≤ T ≤ 100000, the number of test cases. For each test case, there is one line that contains an integer n. It is guaranteed that 1 ≤ T ≤ 105 and 1 ≤ n ≤ 1018 .

输出

For each test case, you should output a line ”Case #i: ans” where i is the test case number, starting from 1 and ans is the remainder of the maximum number of cows farmer John can feed when divided by 109 + 7.

样例输入

3
1
3
5

样例输出

Case #1: 1
Case #2: 4
Case #3: 16

来源/分类

ICPC2017 Urumqi

参考链接:https://blog.csdn.net/tianwei0822/article/details/8127


题意:

给你一个圆圈,让你在圆上给你n个点,让你通过这n个点连线来划分区域,请问最大的划分的区域为多少???

题解:

紫书336页UVA10213

首先给出一个我自己推公式的做法,自己推出来的!!!并不靠谱。

只能推出前10组吧。结合OEIS来找到对应的公式罢了。

正解就应该是:欧拉定理,本来我是不知道的,后来通过看别人的分析大概知道是什么一回事吧。

首先给出自己的方法吧,

我画出n=5,n=6两个图给大家热身一下。

首先大家要知道,一个区域的划分:F=V+E.(F是划分的区域,V是交点数,E是边的数量)

一个直线划分,主要是找出它的交点,区域=交点数+1.

当n=5时:

a[5]=a[4]+2+(2+2)+2   两个新的区域+(各条边的交点数)+边数


当n=6时:

a[6]=a[5]+2+(3+4+3)+3   两个新的区域+(各条边的交点数)+边数

通过几组示例类比得到,

a[7]=a[6]+2+(4+6+6+4)+4

a[8]=a[7]+2+(5+8+9+8+5)+5

a[9]=a[8]+2+(6+10+12+12+10+6)+6

a[10]=a[9]+2+(7+12+15+16+15+12+7)+7

后来通过OEIS来找到答案。

然而答案应该是通过欧拉公式推导出来的。

欧拉做了很多方面的研究,而欧拉定理和欧拉公式还是傻傻分不清楚。

我给大家找来了一个课件,讲的就是欧拉公式从多面体到平面的一个拓展。

了解一下:欧拉公式:

https://wenku.baidu.com/view/a6a62645b307e87101f6968d.html?sxts=1535026638773

这个题的论文:

https://en.wikipedia.org/wiki/Dividing_a_circle_into_areas

提供论文的大佬博客:

http://www.cnblogs.com/AOQNRMGYXLMV/p/4192316.html


然后推公式吧,这里用到平面图的欧拉公式,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条边,所以

然后再根据这两个公式

化简一下得到


太有趣了这个题:

我先贴上代码:

等我自己手稿写好一定附上!!!

#include<bits/stdc++.h>
using namespace std;
const int N =1005;
typedef long long ll;
const ll mod=1e9+7;
ll qpow(ll a,ll b){ll ans=1;a%=mod;while(b){if(b&1){ans=ans*a%mod;}a=a*a%mod;b>>=1;}return ans%mod;
}
int t=1;
template <class T>
void read(T &x){x=0;int f=1;char c=getchar();for( ; !isdigit(c) ;c=getchar()){if(c=='-')f=-1;}for( ;  isdigit(c) ;c=getchar()){x=x*10+c-'0';}x*=f;
}
void solve(){ll n,ans;scanf("%lld",&n);ans=qpow(n,4);ans=(ans-(qpow(n,3)%mod)*6+6ll*mod)%mod;ans=(ans+(qpow(n,2)%mod)*23)%mod;ans=(ans-(n%mod)*18+18ll*mod)%mod;ans=(ans+24ll)%mod;ans=(ans*qpow(24,mod-2))%mod;printf("Case #%d: %lld\n",t,ans);
}
int main()
{int T;read(T);for(t=1;t<=T;t++){solve();}return 0;
}

upc 5215: Fence Building(欧拉定理/推导+OEIS)相关推荐

  1. 2017乌鲁木齐区域赛D题Fence Building

    题目链接:点击打开链接 现场赛的时候想了一个整场都没推出来,xjb推出个式子来也不会写最后打铁...一直都知道这是一道公式题,就是不知道是啥公式,赛后才知道得用欧拉公式...平面内的区域个数=平面内的 ...

  2. 欧拉定理的内容证明及欧拉函数的推导

    欧拉定理的内容证明及欧拉函数的推导 内容 aφ(n)≡1(modn) a^φ(n)≡1 (mod n) 其中φ(n)是欧拉函数,下面是关于φ(n)的求法 φ(n)的求法 φ(n)就是求[1,n]的区间 ...

  3. hdu 4667 Building Fence 计算几何模板

    1 //大白p263 2 #include <cmath> 3 #include <cstdio> 4 #include <cstring> 5 #include ...

  4. Educational Codeforces Round 101 (Rated for Div. 2) C. Building a Fence 思维取范围

    传送门 题意: 思路: 刚看到这个题其实是没什么思路,想过从前往后推或者从后往前推,但是都不是很可行.因为两边都有一个固定的挡板挡住,我们可以根据其中的一个算出来每个位置高度的范围,让后检查一下范围是 ...

  5. Codeforces Beta Round #17 D. Notepad (数论 + 广义欧拉定理降幂)

    Codeforces Beta Round #17 题目链接:点击我打开题目链接 大概题意: 给你 \(b\),\(n\),\(c\). 让你求:\((b)^{n-1}*(b-1)\%c\). \(2 ...

  6. refract推导_我们如何利用Refract来利用React式编程的力量

    refract推导 by Joe McGrath 通过乔麦克格拉斯 我们如何利用Refract来利用React式编程的力量 (How we harnessed the power of reactiv ...

  7. pca数学推导_PCA背后的统计和数学概念

    pca数学推导 As I promised in the previous article, Principal Component Analysis (PCA) with Scikit-learn, ...

  8. NOI数学之提高级:欧拉定理和欧拉函数

    欧拉定理详解 欧拉定理详解_郝伟老师的博客--大数据.并行计算与人工智能时代-CSDN博客_欧拉定理 欧拉函数与欧拉定理 欧拉函数与欧拉定理_leader_one的博客-CSDN博客_欧拉定理 欧拉定 ...

  9. RHCS 集群详解及 部署(ricci、luci、fence、apache、scsi、gfs、DLM)

    一.相关概念 1. 什么是RHCS RHCS是Red Hat Cluster Suite的缩写,也就是红帽集群套件,RHCS是一个能够提供高可用性(理解高可用).高可靠性.负载均衡.存储共享且经济廉价 ...

  10. LMDI 理论推导详解【从理论到Python-MATLAB实现(理论)】

    LMDI 理论推导详解[从理论到Python-MATLAB实现(理论)] 影响因素分解分析方法能够有效地反映任意时段上各个影响因素对目标变量变化的影响程度 大多数模型虽然可以定量反映各影响因素对目标变 ...

最新文章

  1. python打开一个文件-python文件的读写
  2. 关于一些blog优化
  3. 微软工程院院长:1万多应聘者挑不出100人
  4. Struts2的action中处理JSONP方式提交的中文乱码问题:
  5. pytorch实现dcgan_PyTorch版本DCGAN实现的注解
  6. 【工具使用】AI帮你写代码
  7. 崔荣容,英语如法入门1-50讲
  8. 小米生态链企业商米科技完成数亿元C+轮融资,蚂蚁金服投资...
  9. python 天勤 金叉 编程代码_GitHub - Oscar201106/tqsdk-python: 天勤量化开发包, 期货量化, 实时行情/历史数据/实盘交易...
  10. HDU-1425 排序
  11. Plugin with id 'com.novoda.bintray-release' not foun
  12. 原创:Eclipse 上网代理设置(亲测有效)
  13. CPU使用率终于正常了——记一次订餐统事故处理
  14. HP EliteDesk 800 G4 DM 35W (Japan) Mini Tower黑苹果efi引导文件
  15. 抗量子加密:为什么迫切需要它
  16. 云计算课程笔记10089
  17. VirtualBox中安装懒人版macOS Mojave黑苹果系统
  18. Python文件的读写及常用文件的打开方式
  19. 十年没涨过工资,中国的GDP都到哪…
  20. Unix文件、目录及其管理

热门文章

  1. 基于强化学习的综合能源系统管理综述-笔记
  2. 学堂云3大学计算机基础答案,学堂云3答案查询公众号
  3. 使用Python批量下载哨兵1号数据
  4. C++ log4cpp(tx2)
  5. rpcbind相关漏洞验证
  6. 用 JAVA 编写一个 M3U8 视频下载器
  7. Android入门基础教程
  8. china-pub近期免费赠书活动大汇总
  9. 高校后勤管理系统java代码_《高校后勤管理系统的设计与实现》论文笔记二
  10. 屏蔽键盘信息(低级键盘钩子)