基本的に、三角形の高さが底辺+1に等しい二等辺三角形を求めます。紙で数学を行った後、次の2つの方程式のいずれかを使用して、bが与えられた長さLを計算します。
L = sqrt(1.25b 2 + 2b + 1)、hをb+1に置き換え
また
L = sqrt(1.25b 2-2b + 1)、hをb-1に置き換え
私の次のコードは、両方の方程式を使用してbからLを計算します。私はすべてのL値を合計しますが、それは私に間違った答えを与え続けます。
#include <iostream>
#include <cmath>
int main(int argc, char* argv[]) {
int result = 0;
int count = 0;
for (int b = 1; count < 12; b++) {
double x;
double L = std::sqrt(1.25*b*b + 2*b + 1);
if (std::modf(L, &x) == 0.0) {
std::cout << count << ": b=" << b << ", L=" << (int)L << "\n";
result = result + L;
count++;
}
L = std::sqrt(1.25*b*b - 2*b + 1);
if (count != 12 && std::modf(L, &x) == 0.0) {
std::cout << count << ": b=" << b << ", L=" << (int)L << "\n";
result = result + L;
count++;
}
}
std::cout << "Solution: " << result;
std::cin.get();
return 0;
}
私は間違って何をしていますか?解決策ではなくヒントが欲しいのですが…これで正解がわかるはずです。