Official

A - 3.14 Editorial by MMNMM


初心者の方へ

  • AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
  • また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。
  • C++入門 AtCoder Programming Guide for beginners (APG4b) は、競技プログラミングのための C++ 入門用コンテンツです。

文字列 "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679" の先頭 \(N+2\) 文字を出力すればよいです。

これは、\(N+2\) 回だけループを回すことで実現できます。

「文字列 \(S\) の先頭 \(k\) 文字を取った文字列」を作る方法が存在する言語ではその関数を使うことでもこの問題を解くことができます(C++ では std::string::substr 関数を、Python ではスライスを使うとよいです)。

実装例は以下のようになります。 C++ と Python でループを使う実装例とループを使わない実装例を載せます。

出力にループを使う実装

C++

#include <string>
#include <iostream>

using namespace std;

int main() {
    string pi = "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679";

    int N;
    cin >> N;

    for (int i = 0; i < N + 2; ++i) // 先頭 N + 2 文字を出力する
        cout << pi[i];

    cout << endl;

    return 0;
}

Python

pi = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679'
N = int(input())

for i in range(N + 2):
    print(pi[i], end='')

出力にループを使わない実装

C++

#include <string>
#include <iostream>

using namespace std;

int main() {
    string pi = "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679";

    int N;
    cin >> N;

    cout << pi.substr(0, N + 2) << endl;

    return 0;
}

Python

pi = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679'
N = int(input())

print(pi[:N + 2])

posted:
last update: