바 이 두 스타 자격 전-이사

4356 단어 바 이 두
이사 하 다
Accepts: 1195
Submissions: 5009
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
Problem Description
최근 에 B 공장 에서 큰 이 사 를 조직 하여 모든 사람 이 지시 에 따라 지 정 된 좌석 으로 바 꿔 야 한다.지시 내용 은 위치 i 에 앉 은 사람 이 위치 j 로 옮 겨 야 한 다 는 것 이다.현재 B 공장 에는 N 명 이 있 는데 1 대 1 에서 N 의 위치 에 있다.이사 후에 도 일일이 대응 하 는 것 으로 바 뀐 것 은 순위 뿐이다.
도 곰 은 처음 이사 한 뒤 소홀 함 으로 다시 지시 에 따라 이 사 를 진행 해 달라 고 요청 했다.그 러 자 슬기 로 운 생각 이 들 었 다.이 지시 대로 한 번 만 더 이사 하면 첫 이사 모습 을 되 찾 을 수 있 지 않 을 까.그 러 자 B 공장 은 전례 없 이 세 차례 연속 이 사 를 진행 했다.
도 곰 의'기지'가 항상 걱정 스 럽 다 는 것 을 잘 알 고 있 지만 신기 하 게 도 이번 에는 정말 효과 가 있 었 다.세 번 째 이사 후의 결 과 는 첫 번 째 결과 와 완전히 같다.
그렇다면 이런 일이 일어 날 수 있 는 지 시 는 몇 가지 가 있 을 까?두 가지 지시 중 적어도 한 사람의 목표 위치 가 다르다 면 이 두 가지 지 시 는 다르다 고 생각한다.
Input
첫 번 째 줄 의 정수 T 는 T 조 의 데 이 터 를 나타 낸다.
각 조 의 데 이 터 는 하나의 정수 N(1≤N≤1000000)을 포함한다.
Output
각 그룹의 데이터 에 대해 먼저 Case\#i:를 출력 한 다음 에 결 과 를 출력 하고 1000000007 을 추출 합 니 다.
Sample Input
2
1
3

Sample Output
Case #1:
1
Case #2:
4
/**
            :  
            :   
**/
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
#define maxn 1000000+10
#define mod 1000000007
long long mmap[maxn];
void solve()
{
    mmap[0] = 1;
    mmap[1] = 1;
    for(int i=2; i<maxn; i++)
    {
        mmap[i] = (mmap[i-1] + (i-1)*mmap[i-2]) %mod;
    }
}
int main()
{
    //freopen("in.txt","r",stdin);
    int T;
    scanf("%d",&T);
    int Case = 1;
    solve();
    while(T--)
    {
        long long n;
        scanf("%lld",&n);
        printf("Case #%d:
",Case++); printf("%lld
",mmap[n]); } return 0; }

좋은 웹페이지 즐겨찾기