結果
問題 |
No.1050 Zero (Maximum)
|
ユーザー |
|
提出日時 | 2025-09-14 19:54:34 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 217 ms / 2,000 ms |
コード長 | 1,523 bytes |
コンパイル時間 | 431 ms |
コンパイル使用メモリ | 82,228 KB |
実行使用メモリ | 94,212 KB |
最終ジャッジ日時 | 2025-09-14 19:54:39 |
合計ジャッジ時間 | 5,200 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 15 |
ソースコード
import os,sys,random,threading from random import randint,choice,shuffle from copy import deepcopy from io import BytesIO,IOBase from types import GeneratorType from functools import lru_cache,reduce from bisect import bisect_left,bisect_right from collections import Counter,defaultdict,deque from itertools import accumulate,combinations,permutations from heapq import heapify,heappop,heappush from typing import Generic,Iterable,Iterator,TypeVar,Union,List from math import sqrt from decimal import Decimal,getcontext from sys import stdin, stdout, setrecursionlimit input = lambda: sys.stdin.readline().rstrip("\r\n") MI = lambda :map(int,input().split()) li = lambda :list(MI()) ii = lambda :int(input()) mod = 10**9+7 inf = 1<<64 def multiply(A, B): #状态转移,初始状态 x, y, z = len(A), len(A[0]), len(B[0]) ans=[[0]*z for _ in range(x)] for i in range(x): for j in range(z): for t in range(y): ans[i][j]=(ans[i][j]+A[i][t]*B[t][j])%mod return ans def matrixPow(A, n): #状态转移,快速幂次数 res = [[0] * len(A) for _ in range(len(A))] for i in range(len(A)): res[i][i] = 1 while n: if n & 1: res = multiply(res, A) A = multiply(A, A) n >>= 1 return res m,k=li() A=[[0]*m for _ in range(m)] for i in range(m): for j in range(m): A[i][(i+j)%m]+=1 A[i][i*j%m]+=1 Ak=matrixPow(A,k) B=[[0] for _ in range(m)] B[0][0]=1 res=multiply(Ak,B) print(res[0][0])