結果
問題 |
No.2929 Miracle Branch
|
ユーザー |
|
提出日時 | 2024-10-14 14:15:15 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 277 ms / 2,000 ms |
コード長 | 1,544 bytes |
コンパイル時間 | 2,159 ms |
コンパイル使用メモリ | 200,396 KB |
最終ジャッジ日時 | 2025-02-24 19:29:28 |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 43 |
ソースコード
#include <bits/stdc++.h> using namespace std; using ll = long long; #include<atcoder/modint> using namespace atcoder; using mint = modint998244353; void solve() { ll X; cin>>X; vector<bool> P(2e5+10,1); P[0]=P[1]=0; vector<int> Q; if(X==1){ Q.push_back(1); } for(int i=0;i<2e5+10;i++){ if(P[i]){ for(int j=i*2;j<2e5+10;j+=i)P[j]=0; while(X%i==0){ if(i==2){ if(X%4==0){ Q.push_back(4); X/=4; } else{ Q.push_back(2); X/=2; } } else{ Q.push_back(i); X/=i; } } } } if(X!=1){ cout<<-1<<endl; return; } ll S=Q.size(); for(int q:Q){ S+=q; } if(S>2e5){ cout<<-1<<endl; return; } cout<<S<<endl; int cnt=Q.size(); for(int i=1;i<Q.size();i++){ cout<<i<<" "<<i+1<<endl; for(int j=0;j<Q[i-1];j++){ cout<<i<<" "<<cnt+1<<endl; cnt++; } } for(int j=0;j<Q.back();j++){ cout<<Q.size()<<" "<<cnt+1<<endl; cnt++; } for(int i=0;i<S;i++){ cout<<"gb"[i<Q.size()]<<" \n"[i==S-1]; } } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); // ll T; // cin>>T; // while(T--) solve(); }