Last active
July 17, 2018 16:43
-
-
Save pb10005/1deea2d8995d631c685f7c93a79f720e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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