All pastes #387547 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-03-09 13:25 UTC
rendered paste body
#include <stdio.h>
#include <math.h>

#define SUB 1
#define ADD 2

double findans(int n)
{
	double total = pow(3,n);

	int flag = SUB,i,j;
	for(i = 2;i <= n;i++){
		for(j = 0;j < n-i+1;j++){
			if(flag == SUB)
				total -= pow(3,n-i);
			else if(flag == ADD)
				total += pow(3,n-i);
		}
		if(flag == SUB)
			flag = ADD;
		else if(flag == ADD)
			flag = SUB;
		
	}
	return total;
}

double bruteForce(int count,int n,int prev)
{
	int i = 0;
	double ans = 0;
	if(count == n)
		return 1;
	if(count > n)
		return 0;
	for(i = 0;i <= 2;i++)
		if(prev != 0 || (prev == 0 && i != 0))
			ans += bruteForce(count+1,n,i);
	return ans;
}

int main()
{
	int T,n;
	scanf("%d",&T);
	while(T--){
		scanf("%d",&n);
		printf("Findans ------ %.0f\n",findans(n));
		printf("BruteForce ------- %.0f\n",bruteForce(0,n,-1));
	}
	return 0;
}