結果
| 問題 |
No.980 Fibonacci Convolution Hard
|
| ユーザー |
ngtkana
|
| 提出日時 | 2020-01-31 22:06:51 |
| 言語 | C#(csc) (csc 3.9.0) |
| 結果 |
AC
|
| 実行時間 | 1,252 ms / 2,000 ms |
| コード長 | 1,364 bytes |
| コンパイル時間 | 1,920 ms |
| コンパイル使用メモリ | 108,648 KB |
| 実行使用メモリ | 36,980 KB |
| 最終ジャッジ日時 | 2024-09-17 11:30:44 |
| 合計ジャッジ時間 | 25,074 ms |
|
ジャッジサーバーID (参考情報) |
judge6 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 17 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;
using System.Linq;
using System.Collections.Generic;
public static class Program{
static int mod = 1000000007;
static int QLim = 2000001;
public static void Main() {
int p=int.Parse(Console.ReadLine());
int[]a=new int[QLim];
a[0]=0;
a[1]=0;
a[2]=1;
int c1=Mul(2,p);
int c2=Sub(2,Mul(p,p));
int c3=Neg(Mul(2,p));
int c4=mod-1;
for(int i=3;i<QLim;i++){
if(1<=i)AddAssign(ref a[i],Mul(c1,a[i-1]));
if(2<=i)AddAssign(ref a[i],Mul(c2,a[i-2]));
if(3<=i)AddAssign(ref a[i],Mul(c3,a[i-3]));
if(4<=i)AddAssign(ref a[i],Mul(c4,a[i-4]));
}
int q=int.Parse(Console.ReadLine());
for(int i=0;i<q;i++){
Console.WriteLine(a[int.Parse(Console.ReadLine())-2]);
}
}
static void AddAssign(ref int x, int y){
x+=y;
if(mod<=x)x-=mod;
}
static int Add(int x, int y){
AddAssign(ref x, y);
return x;
}
static void SubAssign(ref int x, int y){
x-=y;
if(x<0)x+=mod;
}
static int Sub(int x, int y){
SubAssign(ref x, y);
return x;
}
static int Neg(int x){
if(x==0)return x;
return mod-x;
}
static int Mul(int x, int y){
return (int)((long)x*y%mod);
}
}
ngtkana