로봇 의 춤 (hdu 2232)

8245 단어
로봇 의 춤
Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 292    Accepted Submission(s): 154
Problem Description
하루 에 네 개의 서로 다른 로봇 a, b, c 와 d 가 춤 추 는 담요 에서 춤 을 춘 다. 이것 은 특수 한 춤 담요 이다. 그 는 네 개의 정사각형 담요 로 큰 정사각형 담 요 를 구성 했다. 처음에 네 개의 로봇 이 각각 네 개의 담요 에 서 있 었 다. 춤 추 는 모든 로봇 이 다가 갈 수 있 었 다.한 개의 담요 가 움 직 이거 나 원래 의 담요 (같은 담요 에 여러 개의 로봇 이 머 물 수 있 음) 에 머 물 렀 을 때 로봇 제조 자 는 n 보 를 거 친 이동 이 얼마나 많은 방식 으로 모든 담요 에 로봇 이 머 물 수 있 는 지 알 고 싶 어 한다.
 
 
Input
각 그룹의 데이터 에 정수 n (0 < = n < = 100) 을 입력 하 십시오.
 
 
Output
각 조 의 입 출력 에 대해 하나의 정 수 를 표시 하 는 방법 종 수 는 매우 클 수 있 으 니 9937 에 대해 모델 을 찾 으 십시오.
 
 
Sample Input
1
 
 
Sample Output
9
 
 
Source
HDOJ 2008 Summer Exercise(2)- Hold by Captain Xu
 
 
Recommend
lcy   |   We have carefully selected several similar problems for you:   2235  2233  2234  2237  2238 
사고: 총 네 개의 로봇 에 게 1, 2, 3, 4 개의 위 치 를 기록 합 니 다. 1, 2, 3, 4.
3 차원 배열 a 를 열 고 1 차원 은 걸음 수 를 나타 내 며 2 차원 은 어느 로봇 을 나타 내 고 3 차원 은 로봇 이 있 는 위 치 를 나타 낸다.
그러면 a [i] [j] [k] = sum (a [i - 1] [j] [s]) (abs (k - s)! = 2)
그러면 마지막 으로 네 개의 로봇 이 있 는 위 치 를 매 거 한 다음 에 sum + = 네 개의 위치 방안 수의 곱 하기.
 1 #include<stdio.h>
 2 #include<algorithm>
 3 #include<iostream>
 4 #include<string.h>
 5 #include<math.h>
 6 #include<queue>
 7 #include<string.h>
 8 #include<stack>
 9 #include<vector>
10 #include<map>
11 #define sc(x) scanf("%I64d",&x)
12 #define pr(x) printf("%I64d",x)
13 #define prr(x) printf("%I64d
",x) 14 #define prrr(x) printf(" %I64d",x) 15 #define FOR(i,p,q) for(int i=p;i<=q;i++) 16 const int NN=9937; 17 using namespace std; 18 int a[101][5][5]; 19 int main(void) 20 { 21 int n,i,j,k,p,q,kk; 22 for(i=1; i<=4; i++) 23 { 24 for(j=1; j<=4; j++) 25 { 26 if(i==j) 27 { 28 a[0][i][j]=1; 29 } 30 else a[0][i][j]=0; 31 } 32 }// 0 33 for(i=1; i<=100; i++) 34 for(kk=1; kk<=4; kk++) 35 for(j=1; j<=4; j++) 36 for(int zz=1; zz<=4; zz++) 37 if(abs(zz-j)!=2) 38 a[i][kk][j]=(a[i][kk][j]+a[i-1][kk][zz])%9937;// 4 39 40 int ak[101]; 41 int t[5];// 4 42 for(i=1; i<=100; i++) 43 { 44 int sum=0;memset(t,0,sizeof(t)); 45 for(int r=1; r<=4; r++)// 24 46 { 47 t[r]++; 48 for(int z=1; z<=4; z++) 49 { 50 t[z]++; 51 for(int s=1; s<=4; s++) 52 { 53 t[s]++; 54 for(int y=1; y<=4; y++) 55 { 56 t[y]++; 57 int uu=0; 58 for(int rt=1; rt<=4; rt++) 59 { 60 if(t[rt]!=0) 61 { 62 uu++; 63 } 64 } 65 if(uu==4) 66 { 67 int sum1=((a[i][1][r]%NN*a[i][2][z]%NN)%NN*(a[i][3][s]%NN*a[i][4][y]%NN)%NN)%NN; 68 if(sum1<0) 69 { 70 printf("%d %d
",a[i][3][s],a[i][4][y]); 71 printf("%d
",sum1); 72 } 73 sum=(sum+sum1)%NN; 74 75 } 76 t[y]--; 77 } 78 t[s]--; 79 } 80 t[z]--; 81 } 82 t[r]--; 83 } 84 ak[i]=sum; 85 86 } 87 while(scanf("%d",&k)!=EOF) 88 { 89 printf("%d
",ak[k]); 90 } 91 return 0; 92 }

좋은 웹페이지 즐겨찾기