UPC-favorito (operación de bit)

No importa qué tan alto de la montaña, escalar, subir siempre,
el camino puede ser largo, seguir adelante, será capaz de alcanzar.

UPC-favorito

título Descripción

S debilidad reciente para pequeñas cantidades. También encontró un número mágico. Para el número de x, si es sólo una representación binaria es 0, entonces x será amado por un pequeño s. 5 Por ejemplo, un binario 101, que es amado por los pequeños s.
Ahora, un pequeño s les gusta saber, por un intervalo [L, R], qué pocos son su favorito.

entrada

Que comprende una pluralidad de conjuntos de datos de entrada.
Una primera línea de entrada T, indica el número de conjuntos de datos.
Cada matriz de una sola fila, que comprende dos números enteros positivos [L, r].

exportación

Para cada línea de salida de datos, representa la respuesta.

Ejemplo de entrada

2
5 10
2,015 2,015

Ejemplo de salida

2
1

Insinuación

Para 30% de los datos: L, R≤106, T≤10
para 60% de los datos: L, R≤1010, T≤100
a 100% de los datos: L, R≤1018, T≤10000

portada analítica
Esta pregunta es las ideas muy claras, para cumplir los requisitos del número contado no es mucho, hay una dos mil de la misma, y luego enumera todos los números de la lista
específica qué número?
Hay
0
10
110
101
1110
1101
1011
11110
11101
11011
10111
111110
111101
.
.
.
Por lo tanto, el Derecho se puede ver
con el uso de bit aritmética
cálculo
10000 1 Guardar 1111 podemos tener un
acuerdo con esta idea
de poner el número de móvil << 1 a continuación, un poco Guardarlo
y de acuerdo con el símbolo de intercalación se puede convertir en un poco a la 0

para (ll i = 2; i <= 61; i ++)
{
ll ans = 1;
ans << = i;
Respuesta-;
para (ll j = 0; j <i - 1; j ++)
{
temp LL = (ll) 1 << j;
guardar [q ++] = ans ^ temp;
}
}

De acuerdo con esta idea puede ser para enumerar el número de satisfacer todas se almacenan
y luego la mitad de una consulta sobre ella, pero no hay un número grande, será capaz de encontrar la violencia directa
no Sta y final de los dos números contenidos y todos los números de un vistazo consulta
busca el primer> = Sta encontrar el primer número> número de Fin, entonces este número uno debe ser <= Eed del.
Después de determinar las coordenadas y luego restarlo, si no hay solución, entonces averiguar el valor debe ser el mismo, la diferencia es 0
Tiempo para AC

#include<algorithm>
#include<iostream>
#include<string.h>
#include<utility>
#include<stdio.h>
#include<vector>
#include<string>
#include<math.h>
#include<cmath>
#include<queue>
#include<stack>
#include<deque>
#include<map>
#pragma warning(disable:4244)
#define PI 3.1415926536
#pragma GCC optimize(2)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ll ll_inf = 9223372036854775807;
const int int_inf = 2147483647;
const short short_inf = 32767;
const char char_inf = 127;
inline ll read() {
	ll c = getchar(), Nig = 1, x = 0;
	while (!isdigit(c) && c != '-')c = getchar();
	if (c == '-')Nig = -1, c = getchar();
	while (isdigit(c))x = ((x << 1) + (x << 3)) + (c ^ '0'), c = getchar();
	return Nig * x;
}
inline void out(ll a)
{
	if (a < 0)putchar('-'), a = -a;
	if (a >= 10)out(a / 10);
	putchar(a % 10 + '0');
}
ll qpow(ll x, ll n, ll mod) {
	ll res = 1;
	while (n > 0) {
		if (n & 1)res = (res * x) % mod;
		x = (x * x) % mod; n >>= 1;
	}
	return res;
}
#define read read() 
ll save[1850];//已测满足的数小于1850个数
int main()
{
	ll q = 1;//第一位留给0
	for (ll i = 2; i <= 61; i++)//61位即可满足1e18
	{
		ll ans = 1;
		ans <<= i;
		ans--;
		for (ll j = 0; j < i - 1; j++)
		{
			ll temp = (ll)1 << j;//最开始默认的数字是int型的要转换成long long类型
			save[q++] = ans ^ temp;
		}
	}
	sort(save, save + q);//因为选完是乱序,要排个序
	ll n = read;
	while (n--)//查询步骤
	{
		ll Sta = read;
		ll End = read;
		ll L = 0, R = 0;
		for (ll i = 0; i < q; i++)//第一个大于等于Sta的数
			if (save[i] >= Sta) {
				L = i;
				break;
			}
		for (ll i = 0; i < q; i++)//第一个大于End的数
			if (save[i] > End)
			{
				R = i;
				break;
			}
		cout << R - L << endl;
	}
}

Subproducto de la rueda mes

Publicado 32 artículos originales · ganado elogios 5 · Vistas 1161

Supongo que te gusta

Origin blog.csdn.net/qq_35339563/article/details/105065485
Recomendado
Clasificación