正四面体が与えられます。すべてのエッジは、N 個の等しいセグメントに分割されました。この四面体の内部に、分割点に頂点を持つ縮退していない (|体積|>0) 四面体をいくつ構築できますか? 指定された四面体の頂点を分割点にすることはできません。
例:
- N=2 の場合、答えは 12 です。
- N=37 の場合、答えは 65561472 です。
ここにいくつかの疑似コードを含む答えがありますが、最終ステップを C++ に変換できませんでした。これは私がこれまでに行ったことです:
typedef unsigned long long ulong;
ulong histogram[3002];
int main() {
memset(&histogram[0],0,sizeof(ulong)*3002);
ulong N;
cin >> N;
ulong m = N-1;
ulong u,U,z,Z;
ulong tetra = 3*m*m*(53*m*m-34*m+1)/4;
for( u = 1; u < N; u++) {
U = u/(N-u);
for( z = 1; z < N; z++) {
Z = z/(N-z);
histogram[U*Z]++;
}
}
// How to write the following steps in C++?
/*number_degen = 0;
foreach fraction in histogram {
number_degen += histogram{fraction}^2;
}*/
// I am trying something like this
ulong number_degen = 0;
for (int i = 0; i<3002; i++)
number_degen += histogram[i] * histogram[i];
cout<<number_degen<<endl;
cout<<tetra-3*number_degen<<endl;
}
"number_degen" = "950404" N=37 の場合、4836 でなければならない場合