Pentagon numbers
Problem 44
Pentagonal numbers are generated by the formula, Pn=n(3n−1)/2. The first ten pentagonal numbers are:
1, 5, 12, 22, 35, 51, 70, 92, 117, 145, ...
It can be seen that P4 + P7 = 22 + 70 = 92 = P8. However, their difference, 70 − 22 = 48, is not pentagonal.
Find the pair of pentagonal numbers, Pj and Pk, for which their sum and difference are pentagonal and D = |Pk − Pj| is minimised; what is the value of D?
题解:无脑暴力...
代码:
#include<bits/stdc++.h>
using namespace std;
int calc(int n)
{
return n*(3 * n - 1) / 2;
}
int solve(int n)
{
for (int i = 1; i*(3*i-1) <= 2*n; i++)
{
if (i*(3 * i - 1) == 2 * n)
return 1;
}
return 0;
}
int main()
{
int ans=0;
for (int i = 2; i <= 3000; i++)
{
for (int j = 1; j < i; j++)
{
int sum = calc(i) + calc(j);
int diff = calc(i) - calc(j);
if (solve(sum) && solve(diff))
cout << diff << endl;
}
}
return 0;
}