数三角形Triangel Counting UVa 11401()
2017-08-19 09:20
323 查看
题意
给定一个整数n,有多少种方法可以从1、2、3、、、n中选择元素构成三角形?分析
我们设三角形的三边长度分别为x, y, z,若我们假设x是最长边,,因为我们规定了x是最长边,所以根据加法原理,这些三角形和其他x构成的三角形一定是不一样的,我们设以x为最长边构成三角形的数量为c(x)。根据三角形的性质我们不难得出x - y < z < x,当y = 1时 z有0个解,当y = 2 时 z有1个解 。。。当y等于x - 1时 z 有 x - 2 个解,总共数量是:(x−2)(x−1)2但是这些解中还存在一些重复的情况和不合法的情况(y == z),最后我们推导出我们的结果为:12((x−1)(x−2)2−(x−1−floor(x2)))。
c++ #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #include <cmath> using namespace std; const int maxn = 1000000 + 10; long long f[maxn], n; void init(){ memset(f, 0, sizeof(f)); for(long long i = 3; i < maxn; i++){ f[i] = f[i - 1] + ((i - 1) * (i - 2) / 2 - (i - 1 - i / 2)) / 2; } } int main(int argc, const char * argv[]) { init(); while(scanf("%lld", &n) != EOF){ if(n < 3) break; printf("%lld\n", f ); } return 0; }
小结
问题还是要一步一步从例子开始研究,重要的不是最后能不能搞的出来,而是在不断的研究过程中对问题本身认识的加深和研究问题能力的提高相关文章推荐
- UVA 11401【数三角形】Triangle Counting------2015年1月24日
- uva 11401 数三角形
- UVa 11401 数三角形(组合数学)
- uva11401 - Triangle Counting(数三角形)
- 数学,计数(数三角形,uva 11401)
- UVa 11401 Triangle Counting 数三角形
- uva 11401 Triangle Counting 数三角形 递推
- uva 11401 Triangle Counting 数三角形 递推
- 解题报告_Triangle Counting UVA - 11401_数学规律
- UVa 11401 三角形的个数
- Uva 11401 数三角形
- UVA - 11401 - Triangle Counting(递推+找规律)
- (解题报告)Uva-1225 --- Digit Counting
- 《算法竞赛入门经典2ndEdition 》习题3-3 数数字(Digit Counting, Uva1225)
- UVA 11401 - Triangle Counting (数学题)
- UVA 494 - Kindergarten Counting Game
- UVA 494 - Kindergarten Counting Game
- uva494 Kindergarten Counting Game
- Digit Counting UVA - 1225
- UVA 494 Kindergarten Counting Game