結果
| 問題 |
No.673 カブトムシ
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-04-14 00:07:36 |
| 言語 | Fortran (gFortran 14.2.0) |
| 結果 |
AC
|
| 実行時間 | 1 ms / 2,000 ms |
| コード長 | 1,690 bytes |
| コンパイル時間 | 1,363 ms |
| コンパイル使用メモリ | 35,072 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-06-30 05:55:12 |
| 合計ジャッジ時間 | 1,082 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 14 |
コンパイルメッセージ
Main.f90:9:25:
9 | h=size(a)/size(a(0,:))
| 1
Warning: Array reference at (1) is out of bounds (0 < 1) in dimension 1
Main.f90:10:17:
10 | w=size(b(0,:))
| 1
Warning: Array reference at (1) is out of bounds (0 < 1) in dimension 1
Main.f90:11:25:
11 | m=size(b)/size(b(0,:))
| 1
Warning: Array reference at (1) is out of bounds (0 < 1) in dimension 1
ソースコード
module md
contains
function mul(a,b,mo)
implicit none
integer::i,j,k,h,w,m
integer(kind=8),intent(in)::a(:,:),b(:,:),mo
integer(kind=8),allocatable::mul(:,:)
h=size(a)/size(a(0,:))
w=size(b(0,:))
m=size(b)/size(b(0,:))
allocate(mul(h,w))
do i=1,h
do j=1,w
mul(i,j)=0
end do
end do
do i=1,h
do j=1,w
do k=1,m
mul(i,j)=mul(i,j)+mod(a(i,k)*b(k,j),mo)
mul(i,j)=mod(mul(i,j),mo)
end do
end do
end do
end function
function pow(a,n,mo)
integer(kind=8),value::n,mo
integer(kind=8)::a(:,:)
integer(kind=8)::pow(2,2)
do i=1,2
do j=1,2
if(i==j)then
pow(i,j)=1
else
pow(i,j)=0
end if
end do
end do
do while(n>0)
if(mod(n,2)==1)pow=mul(pow,a,mo)
n=n/2
a=mul(a,a,mo)
end do
end function
function inv(a,mo)
integer(kind=8)::mo
integer(kind=8)::a(:,:)
integer(kind=8),allocatable::inv(:,:)
inv=pow(a,mo-2,mo)
end function
end module
program main
use md
implicit none
integer(kind=8)::b,c,d
integer(kind=8)::ans,mat(2,2),vec(2,1)
integer(kind=8),parameter::mo=1000000007
read*,b,c,d
b=mod(b,mo)
c=mod(c,mo)
vec(1,1)=0
vec(2,1)=b
mat(1,1)=c
mat(1,2)=c
mat(2,1)=0
mat(2,2)=1
mat=pow(mat,d,mo)
vec=mul(mat,vec,mo)
print*,vec(1,1)
end program