Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

why wa???

Posted by hdjtdxacm at 2009-03-24 20:57:32 on Problem 1938
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
using namespace std;
char b[33],s[33];
int a[40],d[40];
int binary(char *s)
{
	int i,len,num=0;
	len = strlen(s);
	for(i = len-1;i >= 0;i--)
		num += (s[i]-'0')*(int(pow(2.0,double(len - i - 1))));
	return num;
}
int binomial (int n, int k)
{
	int i;
	if (n-k < k)
		k = n-k;
    double b = 1;
    for(i=0 ; i<k ; i++)
		b = (b * (n-i)) / (i+1);
	return  (int) floor (b);
}

int main()
{
	int i,j,k,n,c,f,t,num,p1,p2,sum;
	double ans;
	while(scanf("%d",&n)&&n)
	{
		for(i = 1;i <= n;i++)
			scanf("%d",&a[i]);
		scanf("%d",&t);
		for(i = 1;i <= t;i++)
		{
			scanf("%s",b);
			num = binary(b);
		//	printf("num = %d\n",num);
			for(j = 1;j <= n/2;j++)
			{
				scanf("%d",&c);
				for(k = 1;k <= n;k++)
					if(c == a[k])
						break;
				d[j] = k;
			}
			sort(d+1,d+n/2+1);
			d[0] = 0;
			f = 0;
			for(j = 1;j <= n/2;j++)
			{
				if(d[j] - d[j-1] == 1)
					sum = 0;
				else
			    	sum = d[j] - d[j-1];
				for(k = 1;k < sum;k++)
				{
					ans = 1;
					f +=binomial(n-k,n/2-j);
				//	for(p1 = n - k,p2 = 1;p1 >= n/2-k+j+1;p1--,p2++)
				    //	ans = ans*p1/p2;
				//	f += ans;
				}
			}
			if(f == num)
				printf("TRUE\n");
			else
				printf("FALSE\n");
		}
	}
	return 0;
}
/*
Sample Input
4
12 50 74 34
1
00
50 12

8
45 23 86 43 90 76 12 74
2
111001
86 43 90 74
010001
45 86 43 90

4
12 50 74 34
2
101
34 74
110
34 74

0
Sample Output
TRUE
TRUE
FALSE
TRUE
FALSE
*/

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator