UVa 11401 11401 - Triangle Counting
来源:互联网 发布:音速启动是什么软件 编辑:程序博客网 时间:2024/04/30 14:20
题目是给一个n,输出1到n中任取三个不重复数能够组成三角形的个数
到现在还是不相信我做出来了。。。
我先用三重循环跑,代码如下:
for(int i=2; i<=n; ++i){ for(int j=i+1; j<=n; ++j){ for(int k=i+j-1; k>j; --k){ if(i+j>k && k<=n){ cout << "i = " << i << "\t"; cout << "j = " << j << "\t"; cout << "k = " << k << endl; count++; } } } }
然后运行程序通过输入的n与得到的结果找规律。。。结果就找到规律了
对应结果如下:
30410+1×1531+1×2673+2×27137+2×382213+3×393422+3×4105034+4×4117050+4×5129570+5×51312595+5*614161 125+6*6
会发现
如果n为偶数
a[i] = a[i-1]+(n-2)*(n-2)/4
如果n位奇数
a[i] = a[i-1]+(n-1)*(n-3)/4
所以如果n为偶数
a[n] = 0+1*1+1*2+2*2+2*3+...+((n-2)/2)*((n-2)/2) = 1*3+2*5+3*7+...+((n-2)/2)*((n-2)/2)
n为奇数
a[n] = 0+1*1+1*2+2*2+2*3+...+((n-1)/2)*((n-3)/2)=1*3+2*5+3*7+...+((n-1)/2)*((n-3)/2)
不妨另b[i] = i*(2*i+1);
则上面两式对应为:
a[n] = sum{ b[i] }+((n-2)/2)*((n-2)/2) 其中(1<= i <=(n-4)/2)
a[n] = sum{ b[i] }其中(1<= i <=(n-3)/2)
所以最后的代码如下:
#include <cstdio>#include <iostream>#include <algorithm>#define MAXN 1000010#define ll long longusing namespace std;ll a[MAXN];ll f(ll n){ return n*(n+1)*(2*n+1)/3+n*(n+1)/2;}int main(void){ ll n; int ans = 0; while(cin >> n, n>2){ ll ans = 0; if(n % 2){ ans = f((n-3)/2); } else { ans = f((n-4)/2)+((n-2)/2)*((n-2)/2); } /* for(int i=2; i<=n; ++i){ for(int j=i+1; j<=n; ++j){ for(int k=i+j-1; k>j; --k){ if(i+j>k && k<=n){ cout << "i = " << i << "\t"; cout << "j = " << j << "\t"; cout << "k = " << k << endl; count++; } } } } */ cout << ans << endl; } return 0;}
0 0
- 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
- UVA 11401-Triangle Counting
- Permutation Sequence - 20 mins
- HDU 3410 && POJ 3776 Passing the Message 单调队列
- How to add custom title bar to android application
- Windows 7 or 8 Master Boot Record (MBR)
- 【操作系统】线程实现方式(内核级线程、用户级线程)
- UVa 11401 11401 - Triangle Counting
- oracle 系统默认的用户及密码
- Linux 系统挂载数据盘教程
- java Applet绘图。。。
- 初观设计模式
- MySQL+Tomcat+J2EE中文乱码问题的UTF-8的解决方案
- hdu(欧拉函数应用,用筛法的方法求phi数组)
- Windows 8.1 Update 优缺点比较(找到使用一段时候后卡顿的原因了)
- spring mvc的mvc:annotation-driven以及日期的处理