hpu Triangles(数学)
来源:互联网 发布:java log4j mongodb 编辑:程序博客网 时间:2024/06/06 20:37
问题 A: Triangles
时间限制: 1 Sec 内存限制: 128 MB提交: 33 解决: 8
题目描述
已知一个圆的圆周被N个点分成了N段等长圆弧,求任意取三个点,组成锐角三角形的个数。
输入
多组数据,每组数据一个N(N <= 1000000)
输出
对于每组数据,输出不同锐角三角形的个数。
样例输入
3
4
5
样例输出
1
0
5题解:因为要求是锐角,所以圆心应该在三角形内部,将点按顺序排序1,2,3.....i...n,逆时针数为1、2、3……j,当n为偶数时,固定一点,必能找到另外一点经过圆心,这样是不符合题意得,我们固定一点,另外两个点在左右两边各一个,且满足i+j<=n/2。
(1)当N为偶数时,用1, 2 .... k , k+1, .... , 2k来标记N个点(2K = N). 固定一个点, 如点A = 点k, 那么2k点是肯定不能选的了,因为 k, 2k组成一条直径。
所以剩下两个区间 [1, k-1], [K+1, 2k-1].如果点B, 点C同处一个区间,那么ABC一定是一个钝角三角形,所以B,C一定不可处于同一区间。
设点B = 点x, x 属于[1, k-2]; 点C=点y,y 属于[k+1, 2k-1];
在这样的情况下,y - x > k 才能使得ABC为锐角三角形 ==> (x, y)的取值有S = 0 + 1 + 2 + ... + (k - 2) = (k -1) * (k -2) /2 = (N/2 - 1) * (N / 2 - 2) / 2 ;
有N个点,每个三角形被重复计算3次,所以一共有 S * N / 3种;
奇数同理。所以N 为偶数时,ans = N * (N/2 - 1) * (N / 2 - 2) / 6。 N为奇数时,ans = N * (N/2) * (N / 2 + 1) / 6;
#include<cstdio>#define LL long longint main(){LL n;while(scanf("%lld",&n)!=EOF){if((n%2)==0){printf("%lld\n",(n/2-2)*(n/2-1)*n/6);}else printf("%lld\n",(n/2+1)*(n/2)*n/6);}return 0;}
0 0
- hpu Triangles(数学)
- 【HPU-oj】-Triangles(锐角三角形个数,数学,思维)
- [HPU] Triangles [思维]
- 【HPU 1265 Triangles】+ 几何
- [HPU] Bet [数学]
- HPU 1287: HH实习【数学】
- 【HPU 1046 QAQ的数学问题】+ 思维
- 【HPU 1192 Sequence】+ 状态压缩 +组合数学
- hpu 1192 Sequence (dp+组合数学)
- hpu 1215: 毛毛的数学问题
- HPU 1410 QAQ & 火星情报局 (数学)
- HPU 1410: QAQ & 火星情报局 ( 数学
- hpu 【1190】確率(组合数学)
- hpu 1410 火星情报局 [数学] (哥德巴赫猜想)
- Little Zu Chongzhi's Triangles 5135(数学)
- Problem 39 Integer right triangles (数学)
- HPU
- [HPU
- uva12325(分类枚举)
- 函数版万年历
- 利用JEXL实现动态表达式编译
- HDU2050 折线分割平面
- PAT 1040 有几个PAT
- hpu Triangles(数学)
- 机器学习-学习笔记-梯度下降-SGD/BGD
- 通过Java代码装配bean【Spring 入门】
- 4.hadoop之Zookeeper——01.简介及基本配置说明
- c++中怎么控制浮点型小数点后输出的位数
- YUV格式转换为RGB(基于opencv)
- 使用virtualenv创建虚拟环境
- opencv学习笔记--将多帧图片保存为视频
- git clone