結果
問題 | No.573 a^2[i] = a[i] |
ユーザー |
![]() |
提出日時 | 2017-10-06 23:25:53 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
AC
|
実行時間 | 79 ms / 2,000 ms |
コード長 | 2,905 bytes |
コンパイル時間 | 1,225 ms |
コンパイル使用メモリ | 114,708 KB |
実行使用メモリ | 26,528 KB |
最終ジャッジ日時 | 2024-11-17 01:59:26 |
合計ジャッジ時間 | 3,488 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 47 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Numerics;using System.Text;using static System.Console;using static System.Convert;using static System.Math;using static Extentions;class IO{int idx;string[] input = In.ReadToEnd().Split(new[] { " ", "\n", "\r" },StringSplitOptions.RemoveEmptyEntries);T Get<T>(Func<string, T> parser) => parser(input[idx++]);public string S => Get(s => s);public char C => Get(char.Parse);public int I => Get(int.Parse);public long L => Get(long.Parse);public double F => Get(double.Parse);public decimal D => Get(decimal.Parse);public BigInteger B => Get(BigInteger.Parse);T[] Gets<T>(int n, Func<string, T> parser)=> input.Skip((idx += n) - n).Take(n).Select(parser).ToArray();public string[] Ss(int n) => Gets(n, s => s);public char[] Cs(int n) => Gets(n, char.Parse);public int[] Is(int n) => Gets(n, int.Parse);public long[] Ls(int n) => Gets(n, long.Parse);public double[] Fs(int n) => Gets(n, double.Parse);public decimal[] Ds(int n) => Gets(n, decimal.Parse);public BigInteger[] Bs(int n) => Gets(n, BigInteger.Parse);public void Write<T>(params T[] xs) => WriteLine(string.Join(" ", xs));public void Write(params object[] xs) => WriteLine(string.Join(" ", xs));}class Combination{private long[] fact, revFact;public Combination(int n){fact = new long[n];revFact = new long[n];fact[0] = 1;for (var i = 1; i < n; i++){fact[i] = fact[i - 1] * i;fact[i] %= Mod;}revFact[n - 1] = ModPow(fact[n - 1], Mod - 2);for (var i = n - 2; i >= 0; i--){revFact[i] = revFact[i + 1] * (i + 1);revFact[i] %= Mod;}}public long this[int n, int r]=> (((fact[n] * revFact[r]) % Mod) * revFact[n - r]) % Mod;}static class Extentions{public const int Mod = 1000000007;public static long ModPow(long x, long n){var a = 1L;while (n > 0){x %= Mod; a %= Mod;if ((n & 1) == 1) a *= x;x *= x;n >>= 1;}return a % Mod;}}static class Program{public static void Main(){var sw = new StreamWriter(OpenStandardOutput()) { NewLine = "\n" };#if DEBUGsw.AutoFlush = true;#elsesw.AutoFlush = false;#endifSetOut(sw);Solve(new IO());Out.Flush();}static void Solve(IO io){var n = io.I;var ans = 0L;var comb = new Combination(n + 1);for (var i = 1; i <= n; i++){ans += (comb[n, i] * ModPow(i, n - i)) % Mod;ans %= Mod;}io.Write(ans);}}