競プロをしながら、節約と株式投資でセミリタイアを目指す東大卒のブログ

東大卒でメーカー勤務の私がセミリタイアするために投資や競プロを頑張っていこうという趣旨で始めたブログです。独身男性です。火木土日に更新予定です。お金について考えています。

ABC164で書いたコード

using System;
using System.Numerics;
using System.Linq;
using System.Collections.Generic;
using System.Text;

namespace Atcoder20200419
{
    class ProgramA
    {
        static void Main(string args)
        {
 
            //入力
            string a = Console.ReadLine().Split(' ');
            long s = long.Parse(a[0]);
            long l = long.Parse(a[1]);
 
 
            //羊が多いとき(s > l)のときは生き残る、それ以外は死ぬ
            if (s > l)
                Console.WriteLine("safe");
            else
                Console.WriteLine("unsafe");
 
 
        }
    }

    class ProgramB
    {
        static void Main(string args)
        {

            //入力
            string s = Console.ReadLine().Split(' ');
            long a = long.Parse(s[0]);
            long b = long.Parse(s[1]);
            long c = long.Parse(s[2]);
            long d = long.Parse(s[3]);


            //両方まだ体力があれば続行
            while(a >= 1 && c >= 1)
            {
                //高橋君の攻撃
                c -= b;
                //ここで体力がなくなればおしまい
                if (c < 1)
                    break;

                //青木君の攻撃
                a -= d;

            }

            //高橋君モンスターの体力があればYes、それ以外はNo
            if (a > 0)
                Console.WriteLine("Yes");
            else
                Console.WriteLine("No");


        }
    }

 

    class ProgramC
    {
        static void Main(string args)
        {

            //入力
            int n = int.Parse(Console.ReadLine());
            string input = new string[n];

            for (int i = 0i < ni++)
                input[i] = Console.ReadLine();

            
            //ソートする
            Array.Sort(input);
            long count = 1;//最初はとりあえずあることを含む

            //もし前の文字列と違えば、数える
            for(int i = 1;i < n;i++)
            {
                if (input[i] != input[i - 1])
                    count++;
            }

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

    class ProgramD
    {
        static void Main(string args)
        {

            //入力
            string s = Console.ReadLine();
            long ans = 0;
            long temp = 0;
            int sum = new int[2019];
            //余りが0という状態は無条件に1つ加えられる。
            sum[0]++;
            
            //左からi桁のときのmodを入れる
            for (int i = s.Length - 1;i >= 0i--)
            {
                
                temp += (s[i] - '0') * modpow(10s.Length - 1 - i2019);
                temp %= 2019;

                sum[temp]++;

            }

            //余りの個数に応じて計算する
            for (int i = 0i < 2019i++)
                ans += sum[i] * (sum[i] - 1) / 2;
            
            //答え出力
            Console.WriteLine(ans);
            
        }

        //繰り返し二乗法で求める
        static long modpow(long along nlong MOD)
        {
            if (n == 0)
                return 1;
            if (n % 2 == 0)
            {
                long temp = modpow(an / 2MOD);
                return temp * temp % MOD;
            }

            return a * modpow(an - 1MOD) % MOD;
        }
    }
    
}