Skip to content

Instantly share code, notes, and snippets.

@pb10005
Last active July 17, 2018 16:43
Show Gist options
  • Save pb10005/1deea2d8995d631c685f7c93a79f720e to your computer and use it in GitHub Desktop.
Save pb10005/1deea2d8995d631c685f7c93a79f720e to your computer and use it in GitHub Desktop.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using static System.Console;
using static PB10004.Algorithm.Util;
namespace PB10004.Algorithm
{
class Template
{
static void Main(string[] args)
{
}
}
public static class Util
{
/// <summary>
/// 標準入力をint型にパースする
/// </summary>
/// <returns></returns>
public static int ReadInt(){
return int.Parse(ReadLine());
}
/// <summary>
/// 標準入力をint型の配列にする
/// </summary>
/// <returns></returns>
public static int[] ReadIntArray(){
return ReadLine().Split(' ').Select(x=>int.Parse(x)).ToArray();
}
/// <summary>
/// 標準入力をlong型にパースする
/// </summary>
/// <returns></returns>
public static long ReadLong()
{
return long.Parse(ReadLine());
}
/// <summary>
/// 標準入力をlong型の配列にする
/// </summary>
/// <returns></returns>
public static long[] ReadLongArray()
{
return ReadLine().Split(' ').Select(long.Parse).ToArray();
}
/// <summary>
/// 一定値の数列を生成する
/// </summary>
/// <param name="value"></param>
/// <param name="length"></param>
/// <returns></returns>
public static IEnumerable<long> ConstSeq(long value, long length)
{
for (int i = 0; i < length; i++)
{
yield return value;
}
}
/// <summary>
/// int配列の累積和を求める
/// </summary>
/// <param name="array"></param>
/// <returns></returns>
public static IEnumerable<int> CumulativeSum(IEnumerable<int> array)
{
int tmp = 0;
foreach (var num in array)
yield return tmp += num;
}
/// <summary>
/// long配列の累積和を求める
/// </summary>
/// <param name="array"></param>
/// <returns></returns>
public static IEnumerable<long> CumulativeSum(IEnumerable<long> array)
{
long tmp = 0;
foreach (var num in array)
yield return tmp += num;
}
/// <summary>
/// 最大公約数をユークリッドの互除法で求める
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public static long Gcd(long a, long b)
{
return b == 0 ? a : Gcd(b, a % b);
}
/// <summary>
/// 最小公倍数を求める
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
public static long Lcm(long a, long b)
{
return a * b / Gcd(a, b);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment