B. Magic Forest
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Imp is in a magic forest, where xorangles grow (wut?)
A xorangle of order n is such a non-degenerate triangle, that lengths of its sides are integers not exceeding n, and the xor-sum of the lengths is equal to zero. Imp has to count the number of distinct xorangles of order n to get out of the forest.
Formally, for a given integer n you have to find the number of such triples (a, b, c), that:
- 1 ≤ a ≤ b ≤ c ≤ n;
- , where denotes the bitwise xor of integers x and y.
- (a, b, c) form a non-degenerate (with strictly positive area) triangle.
Input
The only line contains a single integer n (1 ≤ n ≤ 2500).
Output
Print the number of xorangles of order n.
Examples
input
Copy
6
output
Copy
1
input
Copy
10
output
Copy
2
Note
The only xorangle in the first sample is (3, 5, 6).
题意:一种三角形三边异或和为0,并且三个边的边长依次递增,问在边长不大于n的情况下有多少个这种的三角形。
题解:两重循环暴力。
#include<bits/stdc++.h>
using namespace std;
int a[2505];
int main()
{
int n;
cin>>n;
int sum = 0;
for(int i = 3; i<n; i++) //一个三角形最短的边长从3开始;
{
for(int j = i+1; j<n; j++)
{
int k = i^j; //i^j^k=0也就是i^j=k;
if(k<=n && k>j && i+j>k && i+k>j && j+k>i)
{
sum++;
}
}
}
cout<<sum<<endl;
}