ド素人のメモ帳

解いた問題のプログラムとか載せてくと思います。

Atcoder#005

A - 大好き高橋君 ( Love me do )

■問題
n個の単語でできた文が与えられて、指定された文字列が入力の中に何個あるか数える。


■解法
単語が指定の文字列と同じか比較するだけ
やるだけ
'.'が最後についても良いことに注意する


■ソース

#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main(void){
  string s;
  int n,ans=0;
  cin >> n;
  for(int i=0;i<n;i++){
    cin >> s;
    if(s == "TAKAHASHIKUN" ){
      ans++;
      continue;
    }
    if(s == "Takahashikun" ){
      ans++;
      continue;
    }
    if(s == "takahashikun" ){
      ans++;
      continue;
    }    
    if(s == "TAKAHASHIKUN." ){
      ans++;
      continue;
    }
    if(s == "Takahashikun." ){
      ans++;
      continue;
    }
    if(s == "takahashikun." ){
      ans++;
      continue;
    }
  }
  cout << ans << endl;
}

B - P-CASカードと高橋君 ( This story is a fiction )

■問題
9*9の数字が並べられてます。
ある場所からある方向に4つの値を取ってそれを出力します。
範囲外に行こうとしたら跳ね返ります。


■解法
4回入力の方に進ませて、範囲外になったら対処するだけ。
やるだけ
バグで死んで汚いので参考にしてはいけない。


■ソース
※閲覧注意

#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int dx[]={0,1,1,1,0,-1,-1,-1};
int dy[]={-1,-1,0,1,1,1,0,-1};
int main(void){
  int x,y,ang;
  string w,s[10];
  cin >> x >> y >> w;
  x--;
  y--;
  for(int i=0;i<9;i++){
    cin >>  s[i];
  }

  if(w == "U"){
    ang = 0;
  }
  else if(w == "RU"){
    ang = 1;
  }
  else if(w == "R"){
    ang = 2;
  }
  else if(w == "RD"){
    ang = 3;
  }
  else if(w == "D"){
    ang = 4;
  }
  else if(w == "LD"){
    ang = 5;
  }
  else if(w == "L"){
    ang = 6;
  }
  else if(w == "LU"){
    ang = 7;
  }
  string ans;
  for(int i=0;i<4;i++){
    ans += s[y][x];
    cout << ang << endl;

    int nx=dx[ang]+x;
    int ny=dy[ang]+y;
    if(!(0 <= nx && nx < 9 && 0 <= ny && ny < 9)){
      if(x == 0 && y == 0 && ang == 7) ang=3;
      else if(x == 8 && y == 0 && ang == 1) ang=5;
      else if(x == 0 && y == 8 && ang == 5) ang=1;
      else if(x == 8 && y == 8 && ang == 3) ang=7;

      else if(x==0 && ang == 7) ang=1;
      else if(x==0 && ang == 5) ang=3;
      else if(x==0 && ang == 6) ang=2;
      else if(x==8 && ang == 1) ang=7;
      else if(x==8 && ang == 3) ang=5;
      else if(x==8 && ang == 2) ang=6;      

      else if(y==0 && ang == 1) ang=3;
      else if(y==0 && ang == 7) ang=5;
      else if(y==0 && ang == 0) ang=4;
      else if(y==8 && ang == 3) ang=1;
      else if(y==8 && ang == 5) ang=7;
      else if(y==8 && ang == 4) ang=0;
    } 

    x+=dx[ang];
    y+=dy[ang];
  }
  cout << ans << endl;
}