Triangle Counting

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描述
You are given n rods of length 1, 2…, n. You have to pick any 3 of them and build a triangle. How many distinct triangles can you make? Note that, two triangles will be considered different if they have at least 1 pair of arms with different length.

输入
The input for each case will have only a single positive integer n(1<=n<=1000000). The end of input will be indicated by a case with n<1. This case should not be processed.
输出
For each test case, print the number of distinct triangles you can make.
样例输入
5
8
0
样例输出
3
22
来源
UVA
上传者
TC_李远航

思路:

常规思路是模拟

但是时间复杂度将会是(o^3)明显超时

所以我们猜一定是有规律的,从数学角度开始分析

设三角形最长边为x,(其他y,z) 最多有c(x)个三角形

那么y+z>x

x-y<z<x

所以当y=1是误解0 y=2 一个解 y=3 三个解.....

0+1+2+3+....+(x-2)

总共:(x-2)*(x-1)/2

但是这里计算了y=z的情况而且每个三角形算了两次

(y=z的情况) y=x/2+1开始 (x-1)-(x/2+1)+1=x/2-1 不难发现x为奇数情况是x/2 偶数情况是x/2-1 so→(技巧)(x-1)/2避免奇偶讨论

于是 c(x)=((x-1)(x-2)/2-(x-1)/2)/2

题目问题的是最长边长不超过n的三角形有多少个 so F(n)=F(n-1)+c(n);

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
long long a[1000005];
int main()
{int n;a[1]=a[2]=a[3]=0;for(long long i=4;i<1000005;i++)a[i]=a[i-1]+((i-1)*(i-2)/2-(i-1)/2)/2;while(~scanf("%d",&n)){if(n<=0)break;printf("%lld\n",a[n]);}
}

数学:给你长度1~n的线段 组成三角形最长边长度不超过你的n三角形有多少个相关推荐

  1. python长度多少_用Python求最长子串长度快速版

    哈喽大家好,周二也是令人愉快的一天啊,今天天气不错,坐在窗户旁边边晒太阳边写文章,再泡杯热茶,真是舒服美好,废话不多说,今天说一下Python求最长子串长度,希望对大家有作用,raksmart服务器. ...

  2. 一条直线上N个线段所覆盖的总长度

    转自http://blog.csdn.net/bxyill/article/details/8962832 问题描述: 现有一直线,从原点到无穷大. 这条直线上有N个线段.线段可能相交. 问,N个线段 ...

  3. python 获取mp3时长(时间长度)

    python 获取mp3时长(时间长度) 第一种方法 import librosa import time def get_mp3_duration(audio_path):""& ...

  4. mysql设计表时 varchar长度_设计表的时候,对变长字段长度选择的一点思考

    设计表时,不管是在MSSQL还是MySQL或者Oracle,变长字段的长度衡量都是要经常面对的. 对于一个变长的字段,在满足业务的情况下(其实所谓的满足业务是一个比较模糊的东西),到底是选择varch ...

  5. Algorithm:C+语言实现之数组相关算法(和为定值的两个数、和为定值的m个数、荷兰国旗、长度为2n的洗牌算法、任意长度数组的洗牌算法)

    Algorithm:C+语言实现之数组相关算法(和为定值的两个数.和为定值的m个数.荷兰国旗.长度为2n的洗牌算法.任意长度数组的洗牌算法) 目录 数组 1.寻找和为定值的两个数 2.和为定值的m个数 ...

  6. 获取字符串中的.前面的长度_算法连载之求解不含有重复字符的最长子串长度...

    问题 给定一个字符串,找出其中不含有重复字符的最长子串长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc" ...

  7. 依图笔试2020/8/28,我是机器人(AC)、多彩珠子最长子串长度(AC)

    第一题:我是机器人 一个方格,Y轴向下,X轴向右,机器人在左上角,位置(0,0). 输入命令4种: L:左转90度 R:右转90度 G X:当前朝向走X步(碰壁停止) P:输出位置坐标 Python实 ...

  8. C语言试题三十三之比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。

    1. 题目 请编写函数function,它的功能是:比较两个字符串的长度,(不得调用c语言提供的求字符串长度的函数),函数返回较长的字符串.若两个字符串长度相同,则返回第一个字符串. 2 .温馨提示 ...

  9. clob类型字段最大存储长度_请教oracle的CLOB字段的最大长度?

    CLOB和BLOB都是4G,而LONG ,LONG raw是旧时代的oracle二进制和长文本表示,将来会被废弃.最长长度是2G. 单位是Byte 表中单个 LOB 字段 在 9i  版本中可保存 4 ...

  10. 设计表的时候,对变长字段长度选择的一点思考

    原文:设计表的时候,对变长字段长度选择的一点思考 不管是在MSSQL还是MySQL或者Oracle,变长字段的长度衡量都是要经常面对的. 对于一个变长的字段,在满足业务的情况下(其实所谓的满足业务是一 ...

最新文章

  1. RDKit:化学指纹(Chemical Fingerprinting)
  2. linux内核中send与recv函数详解
  3. store 存取数据数组对象_ios – 如何在数组中保存自定义对象并将其存储在NSUserDefaults – iPhone中...
  4. buu [GUET-CTF2019]BabyRSA
  5. vim选中字符复制/剪切/粘贴
  6. LeetCode-148:排序链表
  7. C++:求五位学生的总成绩以及平均成绩
  8. Oracle数据库创建表空间
  9. SQL Server代码如何快速格式化
  10. 雨滴win7计算机路径,win7系统设置雨滴桌面(Rainmeter)开机自启动的操作方法
  11. 特殊字符保存到SQL数据库的问题
  12. 计算机教程打字方法,技巧:打字指法和关键位置教程_IT /计算机_信息
  13. linux——CPU使用率、内存使用率、磁盘使用率等详解
  14. 能源物联网及其关键技术
  15. 苹果手机换电池对手机有影响吗_手机电池多久需要换一次?
  16. 已解决:connection holder is null问题。
  17. 【DeepExploit】基于强化学习的自动渗透工具
  18. New Online Judge P1128-绝地求生(多源bfs)
  19. 大学物理学下——静电场05高斯定理
  20. yylabel html富文本,YYLabel 自动布局 富文本文字点击事件

热门文章

  1. 巧妙突破大容量邮箱附件大小限制
  2. Java——抽象类和接口
  3. unity项目对音效的优化处理
  4. python多线程实现同时下载_Python实现多线程下载
  5. 0x3a能否作为c语言常量,C语言编程遇到了宏定义的问题,求解答,万分感谢
  6. 计算机电源在线工作,计算机开关电源的工作原理与维修2.pdf
  7. docker 重启gitlab_gitlab从入门到绝望
  8. Android项目实战之高仿网易云音乐创建项目和配置
  9. POJ 2135Farm Tour--MCMF
  10. 如何成功发布一个MSMQ的Windows服务