흥미로운 수(동적 기획)
1426 단어 CCF동적 기획재미있는 수데이터 구조 및 알고리즘
우리는 하나의 수를 흥미롭다고 하는데, 단지 다음과 같다.
1.그것의 숫자는 0,1,2,3만 포함하고 이 네 개의 숫자는 적어도 한 번은 출현한 적이 있다.
2. 모든 0은 모든 1 앞에 나타나고, 모든 2는 모든 3 앞에 나타난다.
3. 가장 높은 숫자는 0이 아니다.
따라서 우리가 정의한 가장 작은 흥미로운 수는 2013이다.이외에도 4명의 흥미로운 수는 2031과 2301이다.
마침 n자리가 있는 재미있는 수의 개수를 계산해 주세요.답안이 매우 클 수 있으므로, 답안을 1000000007의 나머지로 출력하기만 하면 된다.
입력 형식
올바른 정수 n(4≤n≤1000)을 포함하여 한 줄만 입력합니다.
출력 형식
출력은 n자리의 정수 중 재미있는 수를 포함하는 개수를 1000000007의 나머지로 나누는 한 줄만 있습니다.
샘플 입력
4
샘플 출력
3
동적 계획 방법:
import java.util.*;
public class Main {
public static void main(String[] args) {
new Main().run();
}
public void run() {
Scanner fin = new Scanner(System.in);
int N = fin.nextInt();
long[] count = new long[8];
count[6] = 0;
count[7] = 1;
long mod = 1000000007;
for (int i = 2; i <= N; ++i) {
long[] newCount = new long[8];
newCount[0] = (count[0] * 2 + count[1] + count[3]) % mod;
newCount[1] = (count[1] * 2 + count[2] + count[5]) % mod;
newCount[2] = (count[2] + count[6]) % mod;
newCount[3] = (count[3] * 2 + count[4] + count[5]) % mod;
newCount[4] = (count[4] + count[7]) % mod;
newCount[5] = (count[5] * 2 + count[6] + count[7]) % mod;
newCount[6] = 0;
newCount[7] = 1;
count = newCount;
}
System.out.println(count[0]);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
CCF-201509-4-고속도로이 문제는 강연통분량을 찾고 그림의 모든 강연통분량을 찾으며 각 분량의 도시 대수를 계산하여 답을 얻어야 한다는 것이 분명하다.도시 쌍을 계산하는 방법은 강연통분량의 결점수*(강연통분량의 결점-1)/2 python ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.