結果
| 問題 |
No.3301 Make Right Triangle
|
| コンテスト | |
| ユーザー |
tau1235
|
| 提出日時 | 2025-10-05 17:17:03 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 565 ms / 2,000 ms |
| コード長 | 619 bytes |
| コンパイル時間 | 2,992 ms |
| コンパイル使用メモリ | 279,788 KB |
| 実行使用メモリ | 7,716 KB |
| 最終ジャッジ日時 | 2025-10-05 17:17:16 |
| 合計ジャッジ時間 | 12,864 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 9 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
void solve(){
using ll=long long;
ll l;
cin>>l;
ll x=l;
while (x%2==0) x/=2;
if (x==1){
ll k=l/4;
cout<<3*k<<" "<<4*k<<" "<<5*k<<endl;
return;
}
ll m=x/2+1,n=x/2;
ll a=m*m-n*n,b=2*m*n,c=m*m+n*n;
__int128_t k=l/a;
__int128_t A=a*k,B=b*k,C=c*k;
auto f=[&](__int128_t x){
vector<int> vec;
while (x){
vec.push_back(x%10);
x/=10;
}
reverse(vec.begin(),vec.end());
for (int a:vec) cout<<a;
return "";
};
cout<<f(A)<<" "<<f(B)<<" "<<f(C)<<endl;
}
int main(){
int t;
cin>>t;
while (t--) solve();
}
tau1235