平面划分。
来源:互联网 发布:android app 端口号 编辑:程序博客网 时间:2024/04/27 18:44
一条直线能够将平面分成2部分,两条直线能够将平面分成4部分,而对于一条“V”型线而言,平面被分成2部分,两条“V”型线最多能够将平面分成7部分。对于椭圆封闭曲线对平面的划分又将不一样,任意两个椭圆至多有两个交点。现在给定一个N,你能够计算出三种不同情况下,空间最多被划分出多少个部分吗?
若干组测试数据,每组测试数据占一行,每行一个正整数N(1<=N<=10^6)
每组数据输出一行,每行3个整数,之间用空格隔开。
分别输出N条直线,N条“V”型线,和N个椭圆最多能够将平面划分成多少部分,结果保证在10^18以内。
输入 1 2
输出 2 2 2
4 7 4
本题很简单,直接代公式。具体推导过程,看你数学基础了(高中生照样能完成的)
列出它们之间的递归关系:
直线: f(n)=f(n-1)+n;
v型直线:f(n)=f(n-1)+4n-3;
椭圆(两两相交只要两个点):f(n)=f(n-1)+2(n-1);
如果不求,直接去递归,直接就TLE了。
方法:累加相消。
举一个例子:
对于f(n)=f(n-1)+n;
f(n)-f(n-1)=n
f(n-1)-f(n-2)=n-1;
f(n-2)-f(n-3)=n-2;
.......
f(2)-f(1)=2;
左右相加得:f(n)-f(1)=n+n-1+n-2+......n-(n-2);
故:f(n)=n(n-1)-(n-1)(n-2)/2+2;
化解得:f(n)=(n^2+n+2)/2;
另外两个:同样的方法。
#include<stdio.h>int main(){ long long n,L1,L2,L3; while(scanf("%lld",&n)!=-1) { L1=(n*n+n+2)/2; //直线划分平面 L2=2*n*n-n+1; //V直线划分平面 L3=n*n-n+2; //椭圆(两两相交只有2个点)如果是四个 2*n*n-2*n+2 printf("%lld %lld %lld\n",L1,L2,L3); } return 0;}
- 平面划分
- 平面划分。
- 直线划分平面问题
- 直线划分平面问题
- Problem D: 平面划分
- 平面的划分
- XDOJ1177 - 直线划分平面
- XDOJ1178 - 角划分平面
- 折线划分平面
- 平面划分问题
- 平面划分问题、超平面规划
- Dividing The Plane 直线划分平面
- HDOJ2050(折角划分平面)
- 递推算法---划分平面问题
- hdu 5047 大数+平面区域划分公式
- HDU - 1249 三角形(平面划分)
- 三角形划分平面区域【递归/递推】
- LA 3218 - Find the Border PSLG 平面直线区域划分
- hdu2717
- struts 2 的SessionAware接口使用
- 如何设置ofbiz的日志输出级别
- servlet上传附件代码
- 437 - The Tower of Babylon
- 平面划分。
- 二、lucene3.5的查询语法
- ofbiz权限判断语法整理/安全组
- 窗口大小设置
- hdu 3038 How Many Answers Are Wrong【并查集的简单应用】
- 你真的已经搞懂JavaScript了吗?
- 全面认识桥接、交换和路由等相关知识以及网线和电话线
- 【leetcode】Binary Tree Level Order Traversal
- ORA-16014错误解决办法 计算flash recovery area已经占用的空间