intさわだんのBlack History

刹那的レジェンドになりたい。

AOJ0596&AOJ0258

とりあえず二問。

AOJ0595

非常に汚い

#include <cstdio>
 
using namespace std;
 
int main(){
     
    int n;
    char s[1003];
    int dp[1003][8] = {0};
     
    scanf("%d",&n);
     
    scanf("%s",&s);
     
    if(s[0] == 'J'){
    dp[1][0] = 1;
    dp[1][3] = 1;
    dp[1][5] = 1;
    dp[1][6] = 1;
    }else if(s[0] == 'O'){
    dp[1][3] = 1;
    dp[1][6] = 1;
    }else if(s[0] == 'I'){
    dp[1][5] = 1;
    dp[1][6] = 1;
    }
     
     
    for(int i = 2;i <= n;i++){
 
        int a0 = dp[i-1][0] + dp[i-1][3] + dp[i-1][5] + dp[i-1][6];
        int a1 = dp[i-1][1] +dp[i-1][3] +dp[i-1][4] +dp[i-1][6];
        int a2 = dp[i-1][2] +dp[i-1][4] +dp[i-1][5] +dp[i-1][6];
        int a6 = dp[i-1][0] +dp[i-1][1] +dp[i-1][2] +dp[i-1][3] +dp[i-1][4] +dp[i-1][5]+dp[i-1][6] ;
        int a3 = a6 - dp[i-1][2];
        int a4 = a6 - dp[i-1][0];
        int a5 = a6 - dp[i-1][1];
         
        dp[i][6] = a6;
        if(s[i-1] == 'J'){
             
            dp[i][0] += a0;
            dp[i][3] += a3;
            dp[i][5] += a5;
         
        }else if(s[i-1] == 'O'){
         
            dp[i][1] = a1;
            dp[i][3] = a3;
            dp[i][4] = a4;
         
        }else if(s[i-1] == 'I'){
             
            dp[i][2] += a2;
            dp[i][4] += a4;
            dp[i][5] += a5;
             
        }
         
        for(int j = 0;j < 6;j++){
        dp[i][j] %= 10007;
        }
         
    }
     
    int ans =0;
     
    for(int i = 0;i <= 6;i++){
    ans += dp[n][i];
    ans %= 10007;
    }
     
    printf("%d\n",ans%10007);
     
    return 0;
     
}

AOJ0258

やるだけ

#include <cstdio>
using namespace std;

int main(){
while(1){
	
	int n=0,d[103] = {0};
	scanf("%d",&n);
	if(n == 0)break;
	n+=1;
	
	for(int i = 1;i <= n;i++){
	scanf("%d",&d[i]);
	}
	
	for(int i = 1;i <= n;i++){ 
	int sa = 0;
	int nau;
	
	if(i == 1){
	sa = d[3] - d[2];
	nau = d[2];
	}else if(i == 2){
	sa = d[4] - d[3];
	nau = d[1];
	}else{
	sa = d[2] - d[1];
	nau = d[1];
	}
	
	
		for(int j = 1;j <= n;j++){
		if(i == j) continue;
		if(d[j] != nau) goto out;
		nau += sa;
		}
		printf("%d\n",d[i]);
		break;
		out:
		;
	}
	}
	return 0;
}