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

東大卒でメーカー勤務の私がセミリタイアするために投資や競プロを頑張っていこうという趣旨で始めたブログです。独身男性です。お金の大切さや今後の生き方も併せて伝えられたらと思います。

ABC163で書いたコード

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

namespace Atcoder20200419
{
    class ProgramA
    {
        static void Main(string args)
        {
            //入力
            int n = int.Parse(Console.ReadLine());

            //2nPIを出力
            Console.WriteLine(2*n*Math.PI);
        }
    }

    class ProgramB
    {
        static void Main(string args)
        {
            //入力
            string s = Console.ReadLine().Split(' ');
            int n = int.Parse(s[0]);
            int m = int.Parse(s[1]);
            int sum = 0;

            string a = Console.ReadLine().Split(' ');
            //それぞれの宿題の日数を足していく。
            for (int i = 0;i < m;i++)
            {
                sum += int.Parse(a[i]);
                //もし宿題の人数を超えたらアウトなので-1を出力
                if(sum > n)
                {
                    Console.WriteLine("-1");
                    return;
                }
                
            }

            //答え出力
            Console.WriteLine(n - sum);
        }
    }
 

    class ProgramC
    {
        static void Main(string args)
        {
            //入力
            string s = Console.ReadLine().Split(' ');
            int n = int.Parse(s[0]);
            int k = int.Parse(s[1]);

            string a = Console.ReadLine().Split(' ');
            int boss = new int[n];
            //それぞれのボスを足していく
            for (int i = 0i < n -1i++)
            {
                boss[int.Parse(a[i]) - 1]++;

            }
            //答え出力する
            for (int i = 0i < ni++)
            {
                Console.WriteLine(boss[i]);
            }
            
        }
    }  

    class ProgramD
    {
        static void Main(string args)
        {
            //入力
            string s = Console.ReadLine().Split(' ');
            long n = long.Parse(s[0]);
            long k = long.Parse(s[1]);
            long sum = 0;
            long mod = 1000000000 + 7;

            long[] wa = new long[n+1];

            //0からiまでの和をメモ化しておく
            for (long i = 0i < n + 1i++)
            {
                if (i == 0)
                    wa[0] = 0;
                else
                    wa[i] = i + wa[i - 1];
            }
            
            //答を足していく。n+1だけ例外処理しとく
            for (long i = ki <= n + 1i++)
            {
                if (i < n + 1)
                {
                    long temp = wa[n] - wa[n - i] - wa[i - 1] + 1;
                    sum += temp % mod;
                }
                else
                    sum += 1;
                sum %= mod;

            }

            if (sum < 0)
                sum = mod - sum;

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