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

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

Posted by liyan199311 at 2017-03-31 17:58:25 on Problem 1023
```#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;
}

{
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])
{
}
}
for (int i = length - 1; i >= 0; i--)
{
cout << bs[i];
}
cout << endl;
}
else
{
cout << "Impossible" << endl;
}
}
system("pause");
return 0;
}```

Followed by: