Codeforces Beta Round #44 (Div. 2) A. Triangular numbers

http://codeforces.com/problemset/problem/47/A

题意:
输入n,如果存在整数满足i (i + 1) / 2 == n。输出YES,否则NO.
实则是用n个点是否能组成一个正三角形。顶点是1,边是n,每层递增1,点的总和为
(i + 1) / 2,就是等差数列求和。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <bits/stdc++.h>
using namespace std;

int n;

int main() {
cin >> n;
for (int i = 0; i * (i + 1) / 2 <= n ; ++i) {
if (i * (i + 1) / 2 == n) { printf("YES\n"); return 0; }
}
printf("NO\n");
return 0;
}