東大卒メーカー勤務がゆるっとセミリタイアを目指す

東大卒でメーカー勤務の私がセミリタイアするために考えたことや日々思うことをゆるっと書いていくブログです。独身男性です。お金の大切さや今後の生き方について伝えていけたらと思います。

ABC149で書いたコード

using System;
using System.Linq;
using System.Collections.Generic;

namespace Atcoder20190616
{
    class ProgramA
    {
        static void Main(string args)
        {
            //入力
            string input = Console.ReadLine().Split(' ');
            string s = input[0];
            string t = input[1];

            //出力する
            Console.Write(t);
            Console.Write(s);
                
        }
    }

    class ProgramB
    {
        static void Main(string args)
        {
            
            //入力
            string input = Console.ReadLine().Split(' ');
            long a = long.Parse(input[0]);
            long b = long.Parse(input[1]);
            long k = long.Parse(input[2]);

            //a>+Kのときはa-kとb,それ以外は0とa+b-k
            if(a >= k)
            {
                Console.Write(a - k);
                Console.Write(' ');
                Console.Write(b);

            }
            else
            {
                Console.Write('0');
                Console.Write(' ');
                if(a+b >= K)
                    Console.Write(a + b - k);
                else //a+b-kがマイナスだとまずいのでそのときは0
                {
                    Console.Write('0');
                }
            }    
                
        }
    }

    class ProgramC
    {
        static void Main(string args)
        {
            
            //入力
            string input = Console.ReadLine();
            int x = int.Parse(input);
            int ans = 0;

            //x=2,3なら答はx
            if(x == 3 || x == 2)
            {
                Console.WriteLine(x);
                return;
            }

            //x以上で探す。xは100000までなので、上限は100003です。なのでそこまで調べればいい。
            for(int i = xi < 200000;i++)
            {
                int count = 0;
                for(int j = 2j <= Math.Sqrt(i); j++)
                {
                    //割れないとカウントする
                    if(i % j != 0) 
                        count++;
                    
                    //すべてで割り切れないと判断した場合は素数
                    if(count == (int)Math.Sqrt(i) - 1) 
                    {
                        ans = i;
                    }
                }

                //答えが出たら終了
                if(ans != 0) 
                    break;
            }
            
            //出力
            Console.WriteLine(ans);
        }
    }

    class ProgramD
    {
        static void Main(string args)
        {
            
            //入力
            string input = Console.ReadLine().Split(' ');
            int n = int.Parse(input[0]);
            int k = int.Parse(input[1]);
            string[] input_pqr = Console.ReadLine().Split(' ');
            int p = int.Parse(input_pqr[0]);
            int q = int.Parse(input_pqr[1]);
            int r = int.Parse(input_pqr[2]);
            string t = Console.ReadLine();
            
            //準備
            long count = 0;
            long frag = 0;

            //二重ループでブロックごとに判断する。
            for(int j = 0j < k ;j++)
                for(int i = 0i < n;i = i + k)
                {
                    //文字列範囲外の場合は除外
                    if(i + j >= n)
                      continue;

                    //ブロックの最初はカウント、それ以外は貪欲法で判断する。
                    if(i == 0)
                    {
                        if(t[i + j] == 'r')
                            count += r;
                        else if(t[i + j] == 's')
                            count += p;
                        else
                            count += q;
                    }
                    else
                    {
                        //貪欲法。グーチョキパーそれぞれで場合分けします。
                        if(t[i + j] == 'r')
                        {
                            if(t[i + j - k] == 'r' && frag == 0)
                                frag++;//フラグを立てることでここは違う手を出さないとならないことを示す。
                            else
                            {
                                count += r;
                                frag = 0;//勝ったらリセットしてよい
                            }
                        }
                        else if(t[i + j] == 's')
                        {
                            if(t[i + j - k] == 's' && frag == 0)
                                frag++;
                            else
                            {
                                count += p;
                                frag = 0;
                            }
                        }
                        else
                        {
                            if(t[i + j - k] == 'p' && frag == 0)
                                frag++;
                            else
                            {
                                count += q;
                                frag = 0;
                            }
                            
                        }
                    }
                }

            //答え出力
            Console.WriteLine(count);
          
        }
    }      
}