C/C++凸ポリゴン対角線交点の例コードを求めます。
テーマの説明
n個の頂点の凸多角形については、いずれの三本の対角線も一点に交わることはない。図中の対角線の交点の個数を求めます。
例えば、6辺形:
ここでは複数の対角線が1つの点で交差していないことに注意できます。
入力フォーマット
入力は1行1つの整数nだけで、辺の数を表します。
出力フォーマット
1行1つの整数が答えを表します。
データ規模と約束
ここでは特別な例を示します。
入力は:
98765
出力は:
396437425159822515
特に、この場合、答えの値はlonglongタイプの最大表現範囲に非常に近づいていますので、計算の過程では特に注意して、以下にコードを与えます。
この類推によって、現在は片側が1つの点に分かれています。そしてこちら側の点がだんだん増えてきて、他の側も1つの点だけになるまで。特に注意したいのは、このような対角線のセットにはそれぞれnがあります。このように計算を繰り返しました。例えば、点aから点bまで、点aまでは同じです。題意によって、各交点は二つの対角線によって形成されますが、私達は計算点の時に対角線ごとに計算しました。だからもう一度計算しました。つまり、このようにして得られたanswerは最終的に正しいanswerの4倍です。
特に注意してください。nに乗る操作を外に移して、4で割る操作を早めました。演算中にデータが溢れないようにします。
ここでC/C++凸ポリゴンについて対角線交点を求める文章を紹介します。C+凸ポリゴンについては対角線交点を求める内容がもっと多いです。私たちの以前の文章を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。
n個の頂点の凸多角形については、いずれの三本の対角線も一点に交わることはない。図中の対角線の交点の個数を求めます。
例えば、6辺形:
ここでは複数の対角線が1つの点で交差していないことに注意できます。
入力フォーマット
入力は1行1つの整数nだけで、辺の数を表します。
出力フォーマット
1行1つの整数が答えを表します。
データ規模と約束
ここでは特別な例を示します。
入力は:
98765
出力は:
396437425159822515
特に、この場合、答えの値はlonglongタイプの最大表現範囲に非常に近づいていますので、計算の過程では特に注意して、以下にコードを与えます。
#include <iostream>
using namespace std;
int main()
{
long long int n = 0;
cin >> n;
long long int answer = 0;
long long int temp = 1;
while (temp < (n - 2))
{
answer += temp * (n - temp - 2);
temp++;
}
if (n % 4 == 0)
{
n /= 4;
}
else if (n % 2 == 0)
{
n /= 2;
answer /= 2;
}
else
{
answer /= 4;
}
answer *= n;
cout << answer << endl;
return 0;
}
まず対角線を選択して、多角形を二つの部分に分けて、一方は一つの点で、もう一方は残りの点で、両方の点がつながって形成された対角線は選択された対角線と交差して交点を形成します。この類推によって、現在は片側が1つの点に分かれています。そしてこちら側の点がだんだん増えてきて、他の側も1つの点だけになるまで。特に注意したいのは、このような対角線のセットにはそれぞれnがあります。このように計算を繰り返しました。例えば、点aから点bまで、点aまでは同じです。題意によって、各交点は二つの対角線によって形成されますが、私達は計算点の時に対角線ごとに計算しました。だからもう一度計算しました。つまり、このようにして得られたanswerは最終的に正しいanswerの4倍です。
特に注意してください。nに乗る操作を外に移して、4で割る操作を早めました。演算中にデータが溢れないようにします。
ここでC/C++凸ポリゴンについて対角線交点を求める文章を紹介します。C+凸ポリゴンについては対角線交点を求める内容がもっと多いです。私たちの以前の文章を検索したり、次の関連記事を見たりしてください。これからもよろしくお願いします。