結果
問題 | 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;}