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

Re:求大神 不知道哪里WA了 我是按位处理的

Posted by sy97 at 2019-08-28 17:55:08 on Problem 1023
In Reply To:求大神 不知道哪里WA了 我是按位处理的 Posted by:liyan199311 at 2017-03-31 17:58:25
> #include<iostream>
> #include<string>
> #include<vector>
> #include <fstream> 
> #include<bitset>
> using namespace std;
> 
> string np_data;
> int length;
> __int64 data;
> unsigned __int64 cur_data;
> bitset<64> bs;
> int foundIndex = 63;
> 
> bool handData()
> {
> 	return true;
> }
> 
> void add(int index)
> {
> 	bool cin = 1, next_cin = false;
> 	do
> 	{
> 		if (np_data[length - 1 - index] == 'n')
> 		{
> 			next_cin = !bs[index];
> 		}
> 		else
> 		{
> 			next_cin = bs[index];
> 		}
> 		bs[index] = !bs[index];
> 		cin = next_cin;
> 		index++;
> 	} while (cin); 
> }
> 
> int main()
> {
> 	//ifstream in("d:\\document\\test.txt");
> 	int max_case;
> 	cin >> max_case;
> 	while (max_case--)
> 	{
> 		cin >> length >> np_data >> data;
> 		cur_data = 0;
> 		bool result = true;
> 		bool hasFound = true;
> 		foundIndex = length - 1;
> 		bs = bitset<64>(data);
> 		if (bs[63])
> 		{
> 			hasFound = false;
> 			for (int i = 63; i >= length; i--)
> 			{
> 				if (!bs[i])
> 				{
> 					result = false;
> 					break;
> 				}
> 			}
> 			if (result)
> 			{
> 				for (int i = length - 1; i >= 0; i--)
> 				{
> 					if (np_data[length - 1 -i] != 'n')
> 					{
> 						if (!bs[i])
> 						{
> 							result = false;
> 							break;
> 						}
> 						else
> 						{
> 							bs[i] = 0;
> 						}
> 					}
> 					else
> 					{
> 						bs[i] = 1;
> 						if (bs[i])
> 						{
> 							hasFound = true;
> 							break;
> 						}
> 					}
> 				}
> 			}
> 		}
> 		else
> 		{
> 			unsigned __int64 max = 0;
> 			for (int i = 0; i <= length - 1; i++)
> 			{
> 				max = max << 1;
> 				if (np_data[i] != 'n')
> 				{
> 					max += 1;
> 				}
> 			}
> 			if (max < (unsigned __int64)data)
> 			{
> 				result = false;
> 			}
> 		}
> 		if (result && hasFound)
> 		{
> 			for (int i = 0; i < foundIndex; i++)
> 			{
> 				int index = length - 1 - i;
> 				if (np_data[index] == 'n' && bs[i])
> 				{
> 					add(i + 1);
> 				}
> 			}
> 			for (int i = length - 1; i >= 0; i--)
> 			{
> 				cout << bs[i];
> 			}
> 			cout << endl;
> 		}
> 		else
> 		{
> 			cout << "Impossible" << endl;
> 		}
> 	}
> 	system("pause");
> 	return 0;
> }

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