3358 | 2023-02-27 11:09:11 | CWM | Autókódolás | cpp17 | Forditási hiba |
// 0227.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <iostream>
using namespace std;
using ll = long long;
string ConvertToBits(ll a) {
ll divisor = pow(2, 41);
string s = "";
for (size_t i = 0; i < 42; i++)
{
if (a - divisor >= 0) {
s += '1';
a -= divisor;
}
else s += '0';
divisor/=2;
}
return s;
}
string FindNext(string cur) {
int oc = 0;
bool hadOne = false;
for (int i = 41; i >= 0; i--)
{
if (cur[i] == '0' && hadOne) {
cur[i] = '1';
for (int j = i+1; j < 42; j++)
{
if (j > 42-oc) cur[j] = '1';
else cur[j] = '0';
}
return cur;
}
else if (cur[i] == '1') {
hadOne = true;
oc++;
}
}
}
string FindPrevious(string cur) {
for (int i = 41; i > 0; i--)
{
if (cur[i] == '0' && cur[i - 1] == '1') {
cur[i] = '1';
cur[i - 1] = '0';
return cur;
}
}
return "-1";
}
ll Reconvert(string cur) {
if (cur == "-1") return -1;
ll val = 0;
ll addition = 1;
for (int i = 41; i >= 0; i--)
{
if (cur[i] == '1') val += addition;
addition *= 2;
}
return val;
}
int main()
{
string c = ConvertToBits(4294967296);
string n = FindNext(c);
string p = FindPrevious(c);
ll nI = Reconvert(n);
ll pI = Reconvert(p);
cout << pI << "\n" << nI;
}
// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu
// Tips for Getting Started:
// 1. Use the Solution Explorer window to add/manage files
// 2. Use the Team Explorer window to connect to source control
// 3. Use the Output window to see build output and other messages
// 4. Use the Error List window to view errors
// 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
// 6. In the future, to open this project again, go to File > Open > Project and select the .sln file
exit status 1
main.cpp: In function 'std::string ConvertToBits(ll)':
main.cpp:8:22: error: 'pow' was not declared in this scope
8 | ll divisor = pow(2, 41);
| ^~~
main.cpp: In function 'std::string FindNext(std::string)':
main.cpp:40:1: warning: control reaches end of non-void function [-Wreturn-type]
40 | }
| ^
Exited with error status 1