CSES - Datatähti 2020 alku - Results
Submission details
Task:Lukuvälit
Sender:patamaski
Submission time:2019-10-03 18:53:34 +0300
Language:C++11
Status:COMPILE ERROR

Compiler report

input/code.cpp: In function 'int laskuri(long long int)':
input/code.cpp:11:3: error: 'potenssit' was not declared in this scope
   potenssit[i] = 0;
   ^~~~~~~~~

Code

#include <bits/stdc++.h>

using namespace std;

// Laskee luvulle, montako sopivaa lukua välillä [0, luku]
int laskuri(long long int luku)
{
//	bool potenssit[20];
	for (int i = 0; i < 20; ++i)
	{
		potenssit[i] = 0;
	}
	int palautus = 0;
	long long int talletus;
	for (int i = 0; i < 19; ++i)
	{
		talletus = pow(10, 18 - i);
		if (luku > talletus - 1)
		{
			if (luku < 2 * talletus)
			{
				palautus += pow(2, 18-i);
//				potenssit[18-i] = 1;
				luku -= talletus;
			}
			else
			{
				palautus += pow(2, 19-i);
//				potenssit[19-i] = 1;
				break;
			}
		}
	}

	if (luku == 0)
	{
		palautus++;
	}

/*	for (int i = 0; i < 20; ++i)
	{
		if (potenssit[i] == 1)
		{
			palautus += pow(2, i);
		}
	}*/

	return palautus;
}

int main()
{
	int riveja;
	cin >> riveja;

	long long int rivi[riveja][2];
	for (int i = 0; i < riveja; ++i)
	{
		cin >> rivi[i][0];
		cin >> rivi[i][1];
	}

	int vastaus;
	for (int i = 0; i < riveja; ++i)
	{
		// Jälkimmäisestä luvusta vähennetään yksi, koska silloin esim. [1, 1] tulostuu oikein
		vastaus = laskuri(rivi[i][1]) - laskuri(rivi[i][0]-1);
		cout << vastaus << "\n";
	}

//	cout << laskuri(11) << "\n";
//	cout << pow(2, 11) << "\n";
	return 0;
}