ルクの競プロ部屋

学生の競プロ生活を見たい人はどぞ

ABC339A

問題のリンクはこちら

問題文

文字列が与えられるので、"."で分割したときの最後の要素を出力してください

解法

python

Pythonだと、split関数なるものがあるので、splitしてから添字-1を取得することでACとなります

s=input()
print(s.split(".")[-1])

atcoder.jp

C++

C++では、文字列のsplitが無いのでfor文で回して1文字ずつ見ていくことが有用です
また、split関数をあらかじめライブラリとして登録しておくことで、楽に解くことが出来るかもしれません
こちらが、c++のsplit関数です

void split(vector<string> &elems, const string &s, char delim)
{
    stringstream ss(s);
    string item;
    while (getline(ss, item, delim))
    {
        if (!item.empty())
            elems.push_back(item);
    }
}

こちらを参考にしました
これを使用することで以下のようになりました

#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (ll i = 0; i < (n); ++i)
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
#define yesNo(b) ((b) ? "Yes" : "No")
using ll = long long;
using ull = unsigned long long;
string alphabet = "abcdefghijklmnopqrstuvwxyz";
string ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const double pi = 3.141592653589793;
int smallMOD = 998244353;
int bigMOD = 1000000007;

void split(vector<string> &elems, const string &s, char delim)
{
    stringstream ss(s);
    string item;
    while (getline(ss, item, delim))
    {
        if (!item.empty())
            elems.push_back(item);
    }
}
int main()
{
    int a, b;
    string s;
    cin >> s;
    vector<string> elem;
    split(elem, s, '.');
    cout << elem.back() << endl;
    return 0;
}

atcoder.jp

scratch(おまけ)

なんとなく、scratchでも解いてみました
1文字ずつループしてみて、もし"."があれば変数の上書きで対応しました

scratchでの解法
https://scratch.mit.edu/projects/960773760/