System.Numerics.BigInteger
を使えば N が最大値 100000 でも計算できるけど、時間がかかりすぎて、とても2秒以内には終わらない。
最後に剰余を計算せずとも、毎回計算しても大丈夫だった。
using System; namespace ABC055B { class Program { static void Main(string[] args) { var n = int.Parse(Console.ReadLine()); var m = 1000000007L; var a = 1L; for(var i = 1; i <= n; i++) { a = (a * i) % m; } Console.WriteLine(a); } } }