UVA onlinejudge 11401 - Triangle Counting
来源:互联网 发布:python计算机视觉编程 编辑:程序博客网 时间:2024/05/16 19:38
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2396
题目大意:(这题不好复制过来,就简单说一下题意)输入整数n,从1-n数字中取能构成三角形的三个数,问能得到多少个不同的三角形(不同是指至少有一条边不等)。
Input
5
8
0
SamplOutput
3
2解题思路:观察规律,递推,实现O(n)复杂度。n为3时这样的三角形有0个,n为4时,以4为一条边的三角形有1个即2,3,4,所以一共有1+0=1个,n为5时,以5为一条边的三角形有2个,即5,4,3,和5,4,2。所以一共2+1=3个......(递推到即可)。n从3开始以n为一条边的三角形分别有0,1,2,4,6,9,12,16,20,25,30......个,观察就能找到规律。
代码如下:
#include <cstdio>#include <iostream>#include <cstring>#define ll long longusing namespace std;const ll maxn=1000005;ll b[maxn],a[maxn];//a[]是以i为边的能得到几个三角形,b[]是i个数能得到几个三角形int main(){ll n;memset(b,0,sizeof(b));memset(a,0,sizeof(a));a[3]=0;ll cur=1,ans=0;for(ll i=4;i<maxn;i++){a[i]=a[i-1]+cur;if(i%2)cur++;ans+=a[i];b[i]+=ans;}while(cin>>n){if(n<3)break;cout<<b[n]<<endl;}return 0;}
0 0
- UVA onlinejudge 11401 - Triangle Counting
- UVA 11401 Triangle Counting
- Uva 11401 - Triangle Counting
- UVA 11401 Triangle Counting
- UVA 11401 - Triangle Counting
- UVA 11401 - Triangle Counting
- uva 11401 - Triangle Counting
- UVA - 11401 Triangle Counting
- UVA 11401 Triangle Counting
- UVA - 11401 Triangle Counting
- uva 11401 Triangle Counting
- UVa 11401 Triangle Counting
- uva 11401 Triangle Counting
- UVa 11401 - Triangle Counting
- UVA 11401Triangle Counting
- UVA 11401:Triangle Counting
- UVa 11401 Triangle Counting
- UVA 11401 Triangle Counting
- 分页分段分区内存管理
- signal(SIGPIPE, SIG_IGN)
- dynamic-- web的创建
- 链表操作
- hdu 5371 Hotaru's problem (Manacher算法+枚举)
- UVA onlinejudge 11401 - Triangle Counting
- 菜鸟IDA python调试脚本
- hdu 2041 走楼梯
- LintCode-两个整数相除
- c 语言指针学习
- [UVA 12589]Learning Vector[DP]
- 操作基本像素
- IOS--cell不出图解决方法
- POJ 2349 Arctic Network 最小生成树 prim && kruscal