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

竟然也A了 哦呵呵

Posted by xwd358527617 at 2011-09-08 20:20:42 on Problem 1023
#include <cstdio>
#include <iostream>
using namespace std;

int DetoBinary(long long n,int a[])
{
	int count = 0;
	while(n)
	{
		a[count++] = n%2;
		n = n/2;
	}
	return count;
}

int main()
{
	int cas;
	scanf("%d",&cas);
	while(cas--)
	{
		int length;
		char csign[165];
		int sign[165];
		long long n;
		int a[165],b[165];
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
		int flag1 = 1,flag2 = 1;

		scanf("%d",&length);
		scanf("%s",csign);
		scanf("%I64d",&n);
		if(n<0)
		{
			n = -1*n;
			flag1 = 0;
		}
		int l = DetoBinary(n,a);
		if(l>length)
		{
			printf("Impossible\n");
			continue;
		}
		//for(int i=0;i<l;i++)
		//	printf("%d",a[l-1-i]);

		for(int i = length-1 ;i>=0;i--)
		{	
			if(flag1==1)
				if(csign[i]=='p')
					sign[length-1-i] = 1;
				else
					sign[length-1-i] =0;
			else
				if(csign[i]=='p')
					sign[length-1-i] = 0;
				else
					sign[length-1-i] = 1;
		}

		for(int i=0;i<length;i++)
		{

			a[i+1] += a[i]/2;
			a[i]  = a[i]% 2;
			if(a[i] == 1)
			{
				if(sign[i] == 0)
					a[i+1] ++;
			}
		}
		if(a[length])
			printf("Impossible\n");
		else
		{
			for(int i=0;i<length;i++)
				printf("%d",a[length-1-i]);
			printf("\n");
		}
	}
}

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