結果

問題 No.3437 [Cherry 8th Tune C] Silhouette
コンテスト
ユーザー shingo0909
提出日時 2026-01-23 22:13:29
言語 C++23
(gcc 15.2.0 + boost 1.89.0)
結果
AC  
実行時間 645 ms / 2,000 ms
コード長 921 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 7,377 ms
コンパイル使用メモリ 339,264 KB
実行使用メモリ 7,848 KB
最終ジャッジ日時 2026-01-23 22:18:48
合計ジャッジ時間 12,304 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 11
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <bits/stdc++.h>
#include <atcoder/modint>
using namespace std;
using ll = long long;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)

using mint = atcoder::modint998244353;

struct pos{
    ll x,y,z;
};

mint volume(pos a,pos b,pos c,pos d){
    a.x-=d.x;b.x-=d.x,c.x-=d.x;
    a.y-=d.y;b.y-=d.y,c.y-=d.y;
    a.z-=d.z;b.z-=d.z,c.z-=d.z;
    ll ans=0;
    ans+=a.x*b.y*c.z;
    ans+=a.y*b.z*c.x;
    ans+=a.z*b.x*c.y;
    ans-=a.x*b.z*c.y;
    ans-=a.y*b.x*c.z;
    ans-=a.z*b.y*c.x;
    return mint(abs(ans))/6;
}

int main(){
    int t;
    cin >> t;
    while(t--){
        vector<pos>a(4);
        for(auto&[x,y,z]:a)cin >> x >> y >> z;
        mint v=volume(a[0],a[1],a[2],a[3]);
        v*=a[3].z;
        v*=a[3].z;
        v*=a[3].z;
        v/=a[3].z-a[0].z;
        v/=a[3].z-a[1].z;
        v/=a[3].z-a[2].z;
        v*=3;
        v/=a[3].z;
        cout << v.val() << endl;
    }
    return 0;
}
0