1/29日活動日誌

この記事は約5分で読めます。

去年の12/12に情報オリンピックの2次試験があった

自分は65/500点しか取れなかった。。。

いつの日かこんな問題も楽々とけるように解きなおしていくぞ!!(二次やりたくない(できない)から一次の問題とくぜ!!!)

ちなみにc++しかできないぜ

#include <bits/stdc++.h>
using namespace std;
#define ll long long//「ll」をlong long とする
#define _GLIBCXX_DEBUG//vector型を使いやすくするやつ
int main(){

}

↑この部分はc++でのプログラミングを始めるに必要な部分です

JOI 2023/2024 一次予選 (第3回)

404 Not Found - AtCoder
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.

一問目

コード

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define _GLIBCXX_DEBUG
int main(){
  int n,m;//ここで変数「n」「m」を宣言
  cin >> n >> m;//nmにそれぞれ入力
  cout<< n*60+m;//n×60mを足して出力
}

これは解けた人が多いと思う

これは簡単と思えてほしい

二問目

コード

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define _GLIBCXX_DEBUG
int main(){
  int n,m,k;//変数n,m,kの宣言
  cin>> n >> m;//nとmに入力
  k=n+m;//nとmを足したものをkとする
  if(k < 10)cout<< '1';//kが10未満なら「1」と出力
  if(k >= 10 && k < 100)cout<< '2';//kが10以上かつ100未満なら「2」と出力
  if(k >= 100)cout<< '3';//kが100以上なら
「3」と出力
}

自分はこの問題でぐだったので、強行突破した。

こんなことがないようにみんなは頑張ろう!!!

(つまり10で何回割れるかで判断するみたいなかんじでとけると思う)

三問目

コード

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define _GLIBCXX_DEBUG
int main(){
  int n,x=0;//変数n,xを宣言。xは初期値0
 string s;//文字列sを宣言
  cin>> n >> s;//n,sにそれぞれ入力
  char t;//一文字だけ入るやつ「char型」のtを宣言
 t=s.at(0);//tsの0文字目
  for(int i=0; i<n; i++){//i=0としてiに1ずつ足していきnまで繰り返す
    char c;//一文字だけ入るやつ「char型」のcを宣言
  c=s.at(i);//csi文字目
    if(c!=t)x++;//ctと違ったらxを1増やす
  }
 if(x==0)cout<<"Yes";//xが0だったら「Yes」と出力
  else{
cout<<"No";
}//そうじゃなかったら「No」と出力
}

けっこう難しかったと思う。for文は無限に使うので使えるようになろう!

文字列と一文字の型の使い分けができるようになれば簡単!

四問目

コード

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define _GLIBCXX_DEBUG
int main(){
  int k,n,m,an,bn,x=0;//変数k,n,m,an,bn,x(初期値0)を宣言
  cin>> k>> n;//k,nにそれぞれ入力
  vector<int> a(n);//要素がたくさん(今回はn個)入るやつ「vector型aを宣言
  for(int j=0; j<n; j++){//j=0としてjに1ずつ足していきnまで繰り返す
    cin>>a.at(j);//aのj番目に入力
  }
 cin>>m;//mに入力
  vector<int> b(m);//要素がたくさん(今回はm個)入るやつ「vector型bを宣言
  for(int l=0; l<m; l++){//l=0としてlに1ずつ足していきmまで繰り返す
    cin>>b.at(l);//bl番目に入力
  }
 for(int i=0; i<m; i++){//i=0としてiに1ずつ足していきmまで繰り返す
    bn=b[i];//bnをbのi番目とする
    for(int ii=0; ii<n; ii++){//ii=0としてiiに1ずつ足していきnまで繰り返す
      an=a[ii];//anをaのii番目とする
      if(an+k==bn)x++;//もしan+k=bnだったらxを1増やす
    }
  }cout<<x;//xを出力する
}

見やすくしようとしたらなんか見にくくなった気がするけど気にしない!!

この問題は結構複雑で二重にfor文を使ったりするので難しかったと思う

「vector」という要素がたくさん入るやつはよく使うから覚えたほうがいい

owari

自分より簡単にかける方法は無限にあると思いますが何かの参考になったらいいなと思います。

二次試験むずすぎだろ!!!!

コメント

タイトルとURLをコピーしました