(Archivo IO): Entrada: search.in de salida: search.out
límite de tiempo: 1000 ms limitaciones de espacio: las restricciones específicas 262144 KB
Goto Boletín de problemas
título Descripción
vacas les gusta explorar el terreno alrededor de la granja. Al principio, todo
solamente a partir de las vacas, pero cuando se enfrentan a la intersección, una manada de ganado que puede estar dividido en dos partes (no vaciar), cada parte se mueva hacia adelante cuando se trata de otro cruce, y luego se divide en dos partes, por lo repetida hacia abajo. Suponiendo que el camino está lleno de nuevo tenedor, calcular cuánto tiempo se divide en equipos.
Introduzca la
primera
line: dos enteros separados por espacios:
, en donde
representa el número de vacas lecheras cuando los dos equipos se repartieron la diferencia.
exportación
línea: número entero de salida un número final de equipos.
entrada de la muestra
62
Ejemplo de salida
3
límite de rango de datos
Inclinar
Introduzca una descripción: No
vacas, vacas cuando la diferencia entre los dos equipos de división
.
Descripción Salida: 3 en última instancia, son contingentes
6
/ \
24
/
13
Número de respectivamente
.
Ideas de resolución de problemas
se pueden enumerar directamente cada tenedor en el camino de los dos equipos, un gran número de recursividad y decimales.
Y emite una fórmula de diferencias:
dos números mayor número :( gran número) = (+ y de diferencia) / 2
números dos más pequeños :( número decimal) = (y - diferencia) / 2
código
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
int n,k,ans;
void dfs(int s)
{
if(s>k&&(s-k)%2==0&&(s+k)%2==0)
{
ans++;
dfs((s-k)/2);
dfs((s+k)/2);
}
}
int main(){
freopen("search.in","r",stdin);
freopen("search.out","w",stdout);
scanf("%d%d",&n,&k);
dfs(n);
printf("%d",ans+1);
}