Home
Problem
Status
Contest
Workbook
User
Group
Forum
Register
Login
{"workbook":{"problemsBrief":"{\"AtCoder-apg4b_bz\":[\"3.03\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_bw\":[\"3.06\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_by\":[\"3.04\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_bx\":[\"3.05\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_cd\":[\"2.04\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_cc\":[\"2.05\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_cf\":[\"2.02\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_ce\":[\"2.03\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_cb\":[\"2.06\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_ca\":[\"3.02\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_cl\":[\"1.11\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_ck\":[\"1.12\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_cn\":[\"1.09\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_cm\":[\"1.10\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_ch\":[\"1.15\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_cg\":[\"2.01\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_cj\":[\"1.13\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_ci\":[\"1.14\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_ct\":[\"1.03\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_cs\":[\"1.04\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_cv\":[\"1.01\",1,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_cu\":[\"1.02\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_cp\":[\"1.07\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_co\":[\"1.08\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_cr\":[\"1.05\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_cq\":[\"1.06\",0,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"],\"AtCoder-apg4b_a\":[\"1.00.はじめに\",2,\"\\u003ca class\\u003d\\\"contest-title\\\" href\\u003d\\\"https://atcoder.jp/contests/APG4b\\\"\\u003eC++入門 AtCoder Programming Guide for beginners (APG4b)\\u003c/a\\u003e\"]}","joined":false,"groups":{}},"managingGroups":{},"author":"Isun","updateTime":1710819017000,"title":"C++入門 AtCoder Programming Guide for beginners (APG4b)","dislikeCnt":0,"content":"Source: https://atcoder.jp/contests/APG4b\n\u003chr\u003e\n\n\u003cspan class\u003d\"lang-ja\" style\u003d\"display: inline;\"\u003e\n\u003cscript type\u003d\"text/javascript\"\u003e if (location.href.includes(\u0027apg4b.contest.atcoder.jp\u0027)) { location.href \u003d \u0027https://atcoder.jp/contests/apg4b\u0027; }\u003c/script\u003e\n\n\u003cstyle type\u003d\"text/css\"\u003e\n\ncode {background-color:#eee !important;}\ncode:before,code:after {content:\"\" !important;}\n\nul.nav.nav-tabs\u003eli:nth-child(3), ul.nav.nav-tabs\u003eli:nth-child(4) {display:none !important;}\n\n/* 何もなし */\ndiv.nashi+table thead { display: none !important; }\ndiv.nashi+table th { font-weight: normal !important; }\ndiv.nashi+table th { border-bottom-width: 1px !important; }\n\n/* 縦横強調+ボーダー */\ndiv.tateyoko+table th:nth-child(2) {border-left-width: 2px !important; }\ndiv.tateyoko+table td:nth-child(1) { font-weight: bold !important; }\ndiv.tateyoko+table td:nth-child(2) {border-left-width: 2px !important; }\n\n/* 縦線だけ */\ndiv.tatesendake+table thead { display: none !important; }\ndiv.tatesendake+table th { font-weight: normal !important; }\ndiv.tatesendake+table th { border-bottom-width: 1px !important; }\ndiv.tatesendake+table th:nth-child(1) { font-weight: bold !important; }\ndiv.tatesendake+table th:nth-child(2) {border-left-width: 2px !important; }\ndiv.tatesendake+table td:nth-child(1) { font-weight: bold !important; }\ndiv.tatesendake+table td:nth-child(2) {border-left-width: 2px !important; }\n\n\u003c/style\u003e\n\n\u003cp\u003eプログラミング入門教材 AtCoder Programming Guide for beginners (APG4b)へようこそ。 \u003c/p\u003e\n\n\u003cdiv class\u003d\"part\"\u003e\n\u003csection\u003e\n\u003ch3\u003e対象読者\u003c/h3\u003e\u003cp\u003eAPG4bは中学生から社会人までのプログラミング初心者を対象としています。 \u003c/p\u003e\n\u003cp\u003e多くの入門書とは異なり、APG4bは汎用的な「プログラミングの基礎」を学ぶことを目的としているため、プログラミングそのものに興味がある人から、アプリやゲームを作りたいと思っている人まで、最初のプログラミング教材としてオススメできます。 \u003c/p\u003e\n\u003cp\u003eまた、説明が丁寧に行われているので、「プログラミングの勉強を一度してみたが挫折してしまった」という人にもオススメです。 \u003c/p\u003e\n\u003c/section\u003e\n\u003c/div\u003e\n\n\u003cdiv class\u003d\"part\"\u003e\n\u003csection\u003e\n\u003ch3\u003eAPG4bの特徴\u003c/h3\u003e\u003cp\u003eAPG4bの大きな特徴は、プログラムの説明に練習問題がついていること、そして練習問題の自動採点システムがあることです。 \u003c/p\u003e\n\u003cp\u003eプログラミングの初学者のよくあるパターンとして、「入門書を読みながらそこに書いてあるプログラムをなんとなく写していたが、よくわからなくなってやめてしまう」というものがあります。\u003cbr\u003e\nAPG4bでプログラミングの学習を行えばその心配はありません。説明を読んだあと、練習問題を自分で考えてプログラムを書き、その正しさを採点システムで確認することで、着実にプログラムを書けるようになっていきます。 \u003c/p\u003e\n\u003c/section\u003e\n\u003c/div\u003e\n\n\u003cdiv class\u003d\"part\"\u003e\n\u003csection\u003e\n\u003ch3\u003eAPG4bの取り組み方\u003c/h3\u003e\u003cp\u003e\u003ca href\u003d\"https://atcoder.jp/register?continue\u003dhttps%3A%2F%2Fatcoder.jp%2Fcontests%2Fapg4b\"\u003eAtCoderのアカウントを作成\u003c/a\u003eした後、このページの「参加登録」ボタンを押してください。 \u003c/p\u003e\n\u003cp\u003e参加登録ができたら、下にある目次の「1.00.はじめに」から読み進めて行きましょう。 \u003c/p\u003e\n\u003cp\u003e説明をしているページの一番下には練習問題がついています。説明を読み終えたら必ず練習問題を解きましょう。 \u003c/p\u003e\n\u003c/section\u003e\n\u003c/div\u003e\n\n\u003cdiv class\u003d\"part\"\u003e\n\u003csection\u003e\n\u003ch3\u003e目次\u003c/h3\u003e\u003cp\u003eAPG4bは大きく分けて以下の4つの章からできています。\u003c/p\u003e\n\u003cp\u003e第1章 基本文法\u003cbr\u003e\n第2章 複雑な計算処理の書き方\u003cbr\u003e\n第3章 競技プログラミングに役立つ知識\u003cbr\u003e\n第4章 今まで説明していなかったこと \u003c/p\u003e\n\u003cp\u003eAPG4bのメインコンテンツは1章と2章です。3章と4章はC++をより深く学びたい人や、競技プログラミングに取り組みたい人向けの説明が多くなっています。そのため、他にもっと学びたい言語がある人やアプリやゲームを作りたい人は、1章と2章まで終えたら他の教材に移るのも手です。 \u003c/p\u003e\n\u003cp\u003e具体的な目次は以下のとおりです。\u003c/p\u003e\n\u003cp\u003e\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_a\"\u003e1.00.はじめに\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_b\"\u003e1.01.出力とコメント\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_cv\"\u003eEX1\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_c\"\u003e1.02.プログラムの書き方とエラー\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_cu\"\u003eEX2\u003c/a\u003e \u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_d\"\u003e1.03.四則演算と優先順位\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_ct\"\u003eEX3\u003c/a\u003e \u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_e\"\u003e1.04.変数と型\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_cs\"\u003eEX4\u003c/a\u003e \u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_f\"\u003e1.05.プログラムの実行順序と入力\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_cr\"\u003eEX5\u003c/a\u003e \u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_g\"\u003e1.06.if文・比較演算子・論理演算子\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_cq\"\u003eEX6\u003c/a\u003e \u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_h\"\u003e1.07.条件式の結果とbool型\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_cp\"\u003eEX7\u003c/a\u003e \u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_i\"\u003e1.08.変数のスコープ\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_co\"\u003eEX8\u003c/a\u003e \u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_j\"\u003e1.09.複合代入演算子\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_cn\"\u003eEX9\u003c/a\u003e \u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_k\"\u003e1.10.while文\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_cm\"\u003eEX10\u003c/a\u003e \u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_l\"\u003e1.11.for文・break・continue\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_cl\"\u003eEX11\u003c/a\u003e \u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_m\"\u003e1.12.文字列と文字\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_ck\"\u003eEX12\u003c/a\u003e \u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_n\"\u003e1.13.配列\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_cj\"\u003eEX13\u003c/a\u003e \u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_o\"\u003e1.14.STLの関数\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_ci\"\u003eEX14\u003c/a\u003e \u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_p\"\u003e1.15.関数\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_ch\"\u003eEX15\u003c/a\u003e \u003c/p\u003e\n[problem:AtCoder-apg4b_a]\n[problem:AtCoder-apg4b_cv] EX1\n[problem:AtCoder-apg4b_cu] EX2\n[problem:AtCoder-apg4b_ct] EX3\n[problem:AtCoder-apg4b_cs] EX4\n[problem:AtCoder-apg4b_cr] EX5\n[problem:AtCoder-apg4b_cq] EX6\n[problem:AtCoder-apg4b_cp] EX7\n[problem:AtCoder-apg4b_co] EX8\n[problem:AtCoder-apg4b_cn] EX9\n[problem:AtCoder-apg4b_cm] EX10\n[problem:AtCoder-apg4b_cl] EX11\n[problem:AtCoder-apg4b_ck] EX12\n[problem:AtCoder-apg4b_cj] EX13\n[problem:AtCoder-apg4b_ci] EX14\n[problem:AtCoder-apg4b_ch] EX15\n\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\n\n\t\n\t\n\u003cp\u003e\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_q\"\u003e2.00.第2章について\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_r\"\u003e2.01.ループの書き方と範囲for文\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_cg\"\u003eEX16\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_s\"\u003e2.02.多重ループ\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_cf\"\u003eEX17\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/APG4b/tasks/APG4b_t\"\u003e2.03.多次元配列\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_ce\"\u003eEX18\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_u\"\u003e2.04.参照\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_cd\"\u003eEX19\u003c/a\u003e \u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_v\"\u003e2.05.再帰関数\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_cc\"\u003eEX20\u003c/a\u003e \u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_w\"\u003e2.06.計算量\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_cb\"\u003eEX21\u003c/a\u003e \u003c/p\u003e\n[problem:AtCoder-apg4b_cg] EX16\n[problem:AtCoder-apg4b_cf] EX17\n[problem:AtCoder-apg4b_ce] EX18\n[problem:AtCoder-apg4b_cd] EX19\n[problem:AtCoder-apg4b_cc] EX20\n[problem:AtCoder-apg4b_cb] EX21\n\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\n\n\n\n\u003cp\u003e\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_x\"\u003e3.00.第3章について\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_y\"\u003e3.01.数値型\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_z\"\u003e3.02.pair/tupleとauto\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_ca\"\u003eEX22\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_aa\"\u003e3.03.STLのコンテナ\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_bz\"\u003eEX23\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_ab\"\u003e3.04.構造体\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_by\"\u003eEX24\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_ac\"\u003e3.05.ビット演算\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_bx\"\u003eEX25\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_ad\"\u003e3.06.その他の機能\u003c/a\u003e | \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_bw\"\u003eEX26\u003c/a\u003e \u003c/p\u003e\n[problem:AtCoder-apg4b_ca] EX22\n[problem:AtCoder-apg4b_bz] EX23\n[problem:AtCoder-apg4b_by] EX24\n[problem:AtCoder-apg4b_bx] EX25\n[problem:AtCoder-apg4b_bw] EX26\n\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\n\n\n\n\u003cp\u003e\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_ae\"\u003e4.00.第4章について\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_af\"\u003e4.01.includeディレクティブ\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_ag\"\u003e4.02.名前空間\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_ah\"\u003e4.03.テンプレート\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_ai\"\u003e4.04.イテレータ\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_aj\"\u003e4.05.ポインタ\u003c/a\u003e \u003c/p\u003e\n\u003cp\u003e\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_ak\"\u003e付録1.コードテストの使い方\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_al\"\u003e付録2.提出結果の見方\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_am\"\u003e付録3.コンパイルエラー集\u003c/a\u003e\u003cbr\u003e\n\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_an\"\u003e付録4.ループの裏技repマクロ\u003c/a\u003e \u003c/p\u003e\n\u003c/section\u003e\n\u003c/div\u003e\n\n\u003cdiv class\u003d\"part\"\u003e\n\u003csection\u003e\n\u003ch3\u003e意見募集中\u003c/h3\u003e\u003cp\u003eAPG4bでは皆様のご意見をお待ちしております。\u003cbr\u003e\n誤字・脱字等のご指摘はもちろん、わかりにくかったところや説明の改善案など、お気軽に送ってきてください。 \u003c/p\u003e\n\u003cp\u003eご意見は\u003ca href\u003d\"https://twitter.com/apg4b\"\u003e公式ツイッターアカウント\u003c/a\u003eへお願いします。 \u003c/p\u003e\n\u003chr\u003e\n\u003c/section\u003e\n\u003c/div\u003e\n\n\u003cdiv class\u003d\"part\"\u003e\n\u003csection\u003e\n\u003ch3\u003eプログラミングに詳しい方へ\u003c/h3\u003e\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eここから先はプログラミング未経験者の方は読む必要がありません\u003c/strong\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eAPG4bは多くの一般的な教材とはいくつか違う点があるため、プログラミングに慣れた人がこの教材を見ると色々思うところがあるかもしれません。\u003cbr\u003e\nここではこの教材がどのようなコンセプトで書かれているかを説明した後、APG4bがなぜ一般的でないことをしているのかを説明します。 \u003c/p\u003e\n\u003ch4\u003eAPG4bのコンセプト\u003c/h4\u003e\n\u003cp\u003eプログラムとは何のためにあるのでしょうか?\u003cbr\u003e\n「便利なアプリを作るため」「ゲームをつくるため」「『人工知能』をつくるため」など、色々あると思います。\u003cbr\u003e\nこれらの具体例は決して間違いではありませんが、プログラミングにはより根源的な用途があります。\u003cbr\u003e\nそれは「計算」です。 \u003c/p\u003e\n\u003cp\u003eコンピュータが開発された当初、その用途は高度な電卓でした。\u003cbr\u003e\nそれから月日が流れ、様々な用途に応用されるようになっても、最終的にコンピュータが行っていることが計算であることには変わりません。\u003cbr\u003e\n「スマホで友達にメッセージを送信する」「ゲームで当たり判定をする」「機械翻訳をする」等は全てコンピュータの高度な計算能力に支えられています。\u003cbr\u003e\nそして、その計算をするコンピュータを動かすのがプログラムです。 \u003c/p\u003e\n\u003cp\u003eこのことを踏まえ、この教材は「計算のためのプログラミング」ということを意識して書かれています。\u003cbr\u003e\n具体的には、「処理を一般化してループや配列を扱えるようになる」「再帰関数を扱えるようになる」ということを大きな目標にしています。\u003cbr\u003e\n「データ構造とアルゴリズム」や「数値計算」の一歩手前くらいのイメージです。 \u003c/p\u003e\n\u003cp\u003eこの目標にできるだけ最短で到達するため、一般的な入門書で書かれることがある「プログラムの設計」のような話は意図的に省いています。\u003cbr\u003e\nもちろん、設計はプログラミングの中でも一つの重要な要素ではありますが、「計算」という観点から言えば本質的ではありません。\u003cbr\u003e\nまた、C++に関する詳細な説明も省いています。この教材はC++に詳しくなることを目的としていないからです。 \u003c/p\u003e\n\u003cp\u003eもしC++の詳細な知識や設計の知識が必要な場合は、この教材を終えた後、別の資料で勉強するのが良いと思っています。\u003cbr\u003e\nそれらの項目は「プログラムが書ける」ようになってから学んだほうが効率的に吸収できることもあるでしょう。 \u003c/p\u003e\n\u003cp\u003eもちろん、全てのプログラミング初学者にとってこの教材が最適と言い切れるわけではありませんが、\nゲームエンジンの使い方を覚えたり、特殊なライブラリの仕様に惑わされたりすることなく、「プログラムを書ける」ところまで迅速に学べるようになっているこの教材は、多くの人にとって良いスタートになれると考えています。 \u003c/p\u003e\n\u003ch4\u003eオンラインコンパイラの推奨\u003c/h4\u003e\n\u003cp\u003eAPG4bではAtCoderのコードテスト、もしくはWandboxといったオンラインコンパイラの利用を推奨し、それを前提として書かれています。なぜそうしているかというと、プログラミング初学者はPCに不慣れな人が多く、環境構築が大きな負担になるからです。 \u003c/p\u003e\n\u003cp\u003eプログラミングをはじめようと思った人の中には、環境構築で挫折してしまう人や、環境構築を苦労して終えたがそこで満足してやめてしまう人などが多くいます。\nオンラインコンパイラの利用を標準にしておけばそういう人が出るのを防げますし、非本質的な作業をさせる前にプログラミング言語の解説や練習問題に入ることによって初学者のモチベーションを保ちやすいと考えています。\u003c/p\u003e\n\u003cp\u003eまた、オンラインコンパイラを利用しているため、「コンパイラとは...」や「コンパイルするにはコマンドラインで...」等も最初の説明からは省いています。これらはAPG4bのコンセプト的に重要ではありませんし、初学者が最初にプログラムを書くまでの負担を減らすためです。 \u003c/p\u003e\n\u003cp\u003eもちろんローカル環境で作業することにはそれなりのメリットもあるため、クラブ活動や会社等で周りの経験者が十分にサポートできる状況に限っては、環境構築を行うのも手です。\u003cbr\u003e\nただし、もしあなたが学習者に環境構築を行うように指示した場合は、オンラインコンパイラを使わないことによって起きる問題の解決にしっかりと協力するようにしてください。\n協力することが出来ない場合は、指示はせずAPG4bの手順に従って学習させてください。 \u003c/p\u003e\n\u003ch4\u003ebits/stdc++.h の利用\u003c/h4\u003e\n\u003cp\u003eAPG4bでは全てのプログラムに\u003ccode\u003e#include \u0026lt;bits/stdc++.h\u0026gt;\u003c/code\u003eを冒頭に記述し、コピー&ペーストすることを推奨しています。これはコンパイルエラーが発生し学習が滞ることを防ぐためです。\nコンパイルエラーは学習者の意欲を削ぐことに繋がるので、その原因を潰せるのに越したことはありません。また、APG4bのコンセプト的に重要でない\u003ccode\u003e#include\u003c/code\u003eに関するしっかりとした解説を後回しにできるというメリットもあります。 \u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003ccode\u003e#include\u003c/code\u003eの詳細な解説は4章で行いますが、簡単な解説は\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_b\"\u003e1.01.出力とコメント\u003c/a\u003eの細かい話で行っています。 \u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch5\u003ebits/stdc++.hに関するQ \u0026amp; A\u003c/h5\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eQ. 他の環境で動かないので使うべきではないのでは?\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA. APG4bでは指示通りに進めた場合オンラインコンパイラを利用するので、他の環境で動かないことによって問題が起きることはありません。また、インクルードパスの設定をすれば他の環境で動かすこともできます。ローカル環境で作業するよう指示した場合に関しては、上の「オンラインコンパイラの推奨」で書いたとおりです。 \u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eQ. C++標準で無い機能を利用すべきではないのでは?\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA. インクルードパスを設定して自分で作成したstdc++.hファイルを使えばGCC以外でも利用できるので、少し便利なライブラリがある環境で作業しているような状況だと考えてください。それでも受け入れられない場合は、APG4bで扱っているのはC++ではなく「GCCのC++」だと認識してもらえれば結構です。 \u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eQ. コンパイルが遅くなるのでは?\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA. 少なくともAPG4bや競技プログラミングで作られる規模のプログラムでは、体感できるほどコンパイルが遅くなることはありません。手元のコンピュータで計測してみてください。\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eQ. インクルードパスの設定はどうすれば良いか?\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA. \u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_ak#local_setting\"\u003e「付録1.コードテストの使い方」の「手元のコンピュータでプログラムを書きたい場合」\u003c/a\u003eで説明しています。 \u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eQ. インクルードパスの設定をしたくない/Clangで提出したい\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA. \u003ccode\u003e#include \u0026lt;bits/stdc++.h\u0026gt;\u003c/code\u003eのかわりに\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_ak#local_setting\"\u003e「付録1.コードテストの使い方」の「手元のコンピュータでプログラムを書きたい場合」\u003c/a\u003eに記載した\u003ccode\u003estdc++.h\u003c/code\u003eファイルの\u003ccode\u003e#include\u003c/code\u003eをコピー&ペーストして利用してください。最低限の\u003ccode\u003e#include\u003c/code\u003eのみ行いたい場合は、各行のコメントを参考にしてください。 \u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eusing namespace std; の利用\u003c/h4\u003e\n\u003cp\u003eAPG4bでは全てのプログラムに\u003ccode\u003eusing namespace std;\u003c/code\u003eを冒頭に記述し、コピー&ペーストすることを推奨しています。これは学習者のタイプ数を可能な限り減らすためです。先述したとおりプログラミング初学者はPCに不慣れな人が多く、タイピングもあまり速くないことが多いためこれは意外とメリットが大きいです。 \u003c/p\u003e\n\u003cp\u003e名前の衝突が問題になると思う方もいるかもしれませんが、APG4bではグローバル変数を利用しないため、問題になることは基本的にありません。\u003c/p\u003e\n\u003ch4\u003emain関数のreturnの省略\u003c/h4\u003e\n\u003cp\u003emain関数のreturnは省略しています。C++のmain関数では、returnを省略すると自動的に\u003ccode\u003ereturn 0;\u003c/code\u003eがコンパイル時に追加されます。これはプログラム中から非本質的な部分を減らすために行っています。なお、main関数に関する詳細は\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_p\"\u003e1.15.関数\u003c/a\u003eで解説しています。 \u003c/p\u003e\n\u003ch4\u003e計算量の解説\u003c/h4\u003e\n\u003cp\u003eAPG4bでは計算量の解説も行っています。「計算のためのプログラミング」という観点では非常に重要な概念であり、全てのプログラミング学習者が知っておくべきことだと考えているため、C++特有の話が増えてくる3章より前の段階で解説しています。\u003c/p\u003e\n\u003ch4\u003erepマクロの紹介\u003c/h4\u003e\n\u003cp\u003eAPG4bでは付録としてrepマクロを紹介しています。これは学習を進めていく上で読まなければいけないものという扱いではありませんが、プログラミング初学者にとって有益な情報であるため掲載しました。\nrepマクロの是非については\u003ca href\u003d\"https://atcoder.jp/contests/apg4b/tasks/APG4b_an\"\u003erepマクロ解説ページ\u003c/a\u003eに記載しているので、気になる方は読んでみてください。 \u003c/p\u003e\n\u003chr\u003e\n\u003c/section\u003e\n\u003c/div\u003e\n\n\u003cdiv class\u003d\"part\"\u003e\n\u003csection\u003e\n\u003ch3\u003e著者\u003c/h3\u003e\u003cp\u003e齋藤 主裕・石黒 淳\u003c/p\u003e\u003c/section\u003e\n\u003c/div\u003e\n\u003c/span\u003e\n\t\n","threadId":187103,"likeCnt":0,"createTime":1710815384000,"isWorkbook":true,"viewCnt":98,"openness":2,"fav":false,"id":4717,"trustable":true}