寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

AtCoder Programming Guide for beginners (APG4b) #1.00 ~ 1.15 in C++

AtCoder Programming Guide for beginners (APG4b)から、「第1章 基本文法」の提出コードの解答例です。
AtCoderとは、コンテストを通じて、プログラミングやアルゴリズムを学習するサービスです。
atcoder.jp
プログラミングコンテストとは、「与えられた問題をいかに素早く、正確に」解くことができるかを競うものです。
競技プログラミング」を略して、「競プロ」などと呼ばれています。

AtCoder Programming Guide for beginners (APG4b)
atcoder.jp

僕が作成、提出したコードは、以下のとおりです。

/*
AtCoder Programming Guide for beginners (APG4b) in C++
#A - 1.00.はじめに
https://atcoder.jp/contests/APG4b/tasks/APG4b_a
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include <bits/stdc++.h>
using namespace std;

int main() {
  cout << "Hello, world!" << endl;
}
/*
AtCoder Programming Guide for beginners (APG4b) in C++
#EX1. 1.01 - コードテストと出力の練習
https://atcoder.jp/contests/APG4b/tasks/APG4b_cv
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
  cout<<"こんにちは"<<endl;
  cout<<"AtCoder"<<endl;
}
/*
AtCoder Programming Guide for beginners (APG4b) in C++
#EX2. 1.02 - エラーの修正
https://atcoder.jp/contests/APG4b/tasks/APG4b_cv
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
  cout<<"いつも2525"<<endl;
  cout<<"AtCoderくん"<<endl;
}
/*
AtCoder Programming Guide for beginners (APG4b) in C++
#EX3. 1.03 - 計算問題
https://atcoder.jp/contests/APG4b/tasks/APG4b_ct
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
  double n=0.5;
  cout<<100*(100+1)*n<<endl;
}
/*
AtCoder Programming Guide for beginners (APG4b) in C++
#EX4. 1.04 - ◯年は何秒?
https://atcoder.jp/contests/APG4b/tasks/APG4b_cs
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
  int s1=365*24*60*60;
  cout<<s1<<endl;
  cout<<s1*2<<endl;
  cout<<s1*5<<endl;
  cout<<s1*10<<endl;
}
/*
AtCoder Programming Guide for beginners (APG4b) in C++
#EX5. 1.05 - A足すB問題
https://atcoder.jp/contests/APG4b/tasks/APG4b_cr
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
  int a,b;
  cin>>a>>b;
  cout<<a+b<<endl;
}
/*
AtCoder Programming Guide for beginners (APG4b) in C++
#EX6. 1.06 - 電卓をつくろう
https://atcoder.jp/contests/APG4b/tasks/APG4b_cq
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
  int a,b;
  char op;
  cin>>a>>op>>b;
  if(op=='+'){
    cout<<a+b<<endl;
  }else if(op=='-'){
    cout<<a-b<<endl;
  }else if(op=='*'){
    cout<<a*b<<endl;
  }else if(op=='/'){
    if(b==0){
      cout<<"error"<<endl;
    }else{
      cout<<a/b<<endl;
    }
  }else{
    cout<<"error"<<endl;
  }
  return 0;
}
/*
AtCoder Programming Guide for beginners (APG4b) in C++
#EX7. 1.07 - bool値パズル
https://atcoder.jp/contests/APG4b/tasks/APG4b_cp
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include <bits/stdc++.h>
using namespace std;

int main(void){
  bool a=true;
  bool b=false;
  bool c=true;
  //aがtrueであれば、"At"と表示
  if(a){
    cout<<"At";
  }else{
    cout<<"Yo";
  }
  
  //bがfalse または cがtrueであれば、"Co"と表示
  if(!a && b){
    cout<<"Bo";
  }else if(!b || c){
    cout<<"Co";
  }
  
  //aがfalse または cがtrueであれば、"der"と表示
  if(a && b && c){
    cout<<"foo!"<<endl;
  }else if(true && false){
    cout<<"yeah"<<endl;
  }else if(!a || c){
    cout<<"der"<<endl;
  }
  
  //以上の条件を満たすのは、a=true,b=false,c=trueの時である。
  return 0;
}
/*
AtCoder Programming Guide for beginners (APG4b) in C++
#EX8. 1.08 - たこ焼きセット
https://atcoder.jp/contests/APG4b/tasks/APG4b_co
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
  int pat,price,n;
  string text;
  cin>>pat;
  if(pat==1){
    cin>>price>>n;
    cout<<price*n<<endl;
  }else if(pat==2){
    cin>>text>>price>>n;
    cout<<text<<"!"<<endl;
    cout<<price*n<<endl;
  }
  return 0;
}
/*
AtCoder Programming Guide for beginners (APG4b) in C++
#EX9. 1.09 - 複合代入演算子を使おう
https://atcoder.jp/contests/APG4b/tasks/APG4b_cn
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
  int x,a,b,ans1,ans2,ans3,ans4;
  cin>>x>>a>>b;
  x++;
  ans1=x;
  ans2=ans1*(a+b);
  ans3=ans2*ans2;
  ans4=ans3-1;
  cout<<ans1<<endl;
  cout<<ans2<<endl;
  cout<<ans3<<endl;
  cout<<ans4<<endl;
  return 0;
}
/*
AtCoder Programming Guide for beginners (APG4b) in C++
#EX10. 1.10 - 棒グラフの出力
https://atcoder.jp/contests/APG4b/tasks/APG4b_cm
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
  int a,b,i;
  cin>>a>>b;
  
  //Aさんの点数を出力
  cout<<"A:";
  i=0;
  while(i<a){
    cout<<"]";
    i++;
  }
  cout<<endl;
  
  //Bさんの点数を出力
  cout<<"B:";
  i=0;
  while(i<b){
    cout<<"]";
    i++;
  }
  cout<<endl;
  
  return 0;
}
/*
AtCoder Programming Guide for beginners (APG4b) in C++
#EX11. 1.11 - 電卓をつくろう2
https://atcoder.jp/contests/APG4b/tasks/APG4b_cl
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
  int n,a;
  cin>>n>>a;
  int ans=a;
  vector<char> op(n);
  vector<int> b(n);
  for(int i=0;i<n;i++){
    cin>>op[i]>>b[i];
    if(op[i]=='+'){
      ans+=b[i];
      cout<<i+1<<":"<<ans<<endl;
    }else if(op[i]=='-'){
      ans-=b[i];
      cout<<i+1<<":"<<ans<<endl;
    }else if(op[i]=='*'){
      ans*=b[i];
      cout<<i+1<<":"<<ans<<endl;
    }else if(op[i]=='/'){
      if(b[i]==0){
        cout<<"error"<<endl;
        break;
      }else{
        ans/=b[i];
        cout<<i+1<<":"<<ans<<endl;
      }
    }
  }
  return 0;
}
/*
AtCoder Programming Guide for beginners (APG4b) in C++
#EX12. 1.12 - 足したり引いたり
https://atcoder.jp/contests/APG4b/tasks/APG4b_ck
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
  string s;
  cin>>s;
  int sl=s.length();
  int plus=0,minus=0; //plusは"+"の個数,minusは"-"の個数
  for(int i=0;i<sl;i++){
    if(s[i]=='+'){
      ++plus;
    }else if(s[i]=='-'){
      ++minus;
    }
  }
  cout<<plus-minus+1<<endl;
  return 0;
}
/*
AtCoder Programming Guide for beginners (APG4b) in C++
#EX13. 1.13 - 平均との差
https://atcoder.jp/contests/APG4b/tasks/APG4b_cj
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
  int n,sum=0;
  cin>>n;
  vector<int> a(n);
  for(int i=0;i<n;i++){
    cin>>a[i];
    sum+=a[i];
  }
  sum/=n;
  for(int i=0;i<n;i++){
    if(sum>a[i]){
      cout<<sum-a[i]<<endl;
    }else{
      cout<<a[i]-sum<<endl;
    }
  }
  return 0;
}
/*
AtCoder Programming Guide for beginners (APG4b) in C++
#EX14. 1.14 - 三人兄弟の身長差
https://atcoder.jp/contests/APG4b/tasks/APG4b_ci
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
  int a,b,c;
  cin>>a>>b>>c;
  int ma0=max(a,b);
  int ma=max(ma0,c);
  int mi0=min(a,b);
  int mi=min(mi0,c);
  cout<<ma-mi<<endl;
  return 0;
}
/*
AtCoder Programming Guide for beginners (APG4b) in C++
#EX15. 1.15 - 三人兄弟へのプレゼント
https://atcoder.jp/contests/APG4b/tasks/APG4b_ch
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
  int n,sa=0,sb=0,sc=0;
  cin>>n;
  vector<int> a(n),b(n),c(n);
  for(int i=0;i<n;i++){
    cin>>a[i];
    sa+=a[i];
  }
  for(int i=0;i<n;i++){
    cin>>b[i];
    sb+=b[i];
  }
  for(int i=0;i<n;i++){
    cin>>c[i];
    sc+=c[i];
  }
  cout<<sa*sb*sc<<endl;
  return 0;
}

AtCoder Beginner Contestは、オンラインジャッジによるプログラミングコンテストです。
日本語と英語に対応していて、週末ごとに実施されているみたいです。
https://practice.contest.atcoder.jp/tutorial
アカウントを登録すれば、誰でも参加できます。