結果
問題 | No.1735 C# |
ユーザー |
|
提出日時 | 2021-11-12 21:24:48 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 3,519 bytes |
コンパイル時間 | 1,019 ms |
コンパイル使用メモリ | 97,608 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-25 11:56:38 |
合計ジャッジ時間 | 1,248 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 7 |
コンパイルメッセージ
main.cpp:24:15: warning: left shift count >= width of type [-Wshift-count-overflow] 24 | const ll inf=1<<60; | ~^~~~
ソースコード
#include <iostream> // cout, endl, cin #include <string> // string, to_string, stoi #include <vector> // vector #include <algorithm> // min, max, swap, sort, reverse, lower_bound, upper_bound #include <utility> // pair, make_pair #include <tuple> // tuple, make_tuple #include <cstdint> // int64_t, int*_t #include <cstdio> // printf #include <map> // map #include <queue> // queue, priority_queue #include <set> // set #include <stack> // stack #include <deque> // deque #include <unordered_map> // unordered_map #include <unordered_set> // unordered_set #include <bitset> // bitset #include <cctype> // isupper, islower, isdigit, toupper, tolower #include<math.h> using namespace std; #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define repi(i, a, b) for (int i = (int)(a); i < (int)(b); i++) using namespace std; typedef long long ll; const ll inf=1<<60; // 考える最大の整数 const int MAX = 200005; // 今回採用する大きい素数 const int MOD = 1000000007; const long long mod=1000000007; const long long mod2=998244353; using ll=long long; using P= pair<ll, ll>; ll fact[MAX], inv_fact[MAX], inv[MAX]; // メモを計算する void init() { // 初期値設定と1はじまりインデックスに直す fact[0] = 1; fact[1] = 1; inv[0] = 1; inv[1] = 1; inv_fact[0] = 1; inv_fact[1] = 1; // メモの計算 repi(i, 2, MAX){ // 階乗 fact[i] = fact[i - 1] * i % MOD; // 逆元 inv[i] = MOD - inv[MOD%i] * (MOD / i) % MOD; // 逆元の階乗 inv_fact[i] = inv_fact[i - 1] * inv[i] % MOD; } } // 二項係数の実体 ll nCk(int n, int k) { ll x = fact[n]; // n!の計算 ll y = inv_fact[n-k]; // (n-k)!の計算 ll z = inv_fact[k]; // k!の計算 if (n < k) return 0; // 例外処理 if (n < 0 || k < 0) return 0; // 例外処理 return x * ((y * z) % MOD) % MOD; //二項係数の計算 } struct UnionFind { vector<int> par, siz; UnionFind(int n) : par(n, -1) , siz(n, 1) { } // 根を求める int root(int x) { if (par[x] == -1) return x; else return par[x] = root(par[x]); } // x と y が同じグループに属するかどうか (根が一致するかどうか) bool issame(int x, int y) { return root(x) == root(y); } // x を含むグループと y を含むグループとを併合する bool unite(int x, int y) { x = root(x), y = root(y); if (x == y) return false; if (siz[x] < siz[y]) swap(x, y); par[y] = x; siz[x] += siz[y]; return true; } // x を含むグループのサイズ int size(int x) { return siz[root(x)]; } }; struct Edge { int to; int w; Edge(int to, int w) : to(to), w(w) { } }; using Graph=vector<vector<int> >; //min(x,y)が0以下の場合はmax(x,y)が返される //ユークリッドの互除法を元に実装 ll gcd(ll x,ll y){ if(x<y) swap(x,y); //xの方が常に大きい ll r; while(y>0){ r=x%y; x=y; y=r; } return x; } //オーバフローしないようにかける順番を気を付ける ll lcm(ll x,ll y){ return ll(x/gcd(x,y))*y; } ll pow_pow(ll x,ll n, ll mod){ if(n==0) return 1; ll res=pow_pow(x*x/mod,n/2,mod); if(n&1)res=res*x%mod; return res; } int main(){ string s; cin >> s; string ans; if(s=="E")ans='F'; else if(s=="B")ans='C'; else ans=s+'#'; cout << ans << endl; }