[ganado] --- DES red de cuerdas e-mail && recuento

[Correo] ganado fuera de la red && recuento cuerdas

Un tema : e-mail
descripción de la temática :
NowCoder dan una gran cantidad de personas todos los días electrónico. Un día encontró el correo mal, enviada al correo electrónico enviado a B de A, B son enviados a la dirección de correo fue enviado a A. Por lo que pensó, para dar n de correo electrónico personal, en el caso de cada persona recibe un único mensaje, el número de casos de todo el mundo está recibiendo un mensaje de error? Que nadie ha recibido el mensaje de los suyos.

Descripción Entrada :
Entrada de los datos que comprenden una pluralidad de conjuntos, cada conjunto de datos que comprende un número entero positivo n (2≤n≤20).

Salida Descripción :
correspondiente a cada conjunto de datos y da salida a un número entero positivo que indica que no recibió varios mensajes de su propia.

Ideas de resolución de problemas:
O explorar el tema de la acción reguladora, la forma más fácil es tratar de averiguar si puedo encontrar para resolver la ecuación de estado, necesitamos saber dónde, cuándo numeradas n elementos en posición N, posición y número de cada elemento número numerado no corresponde método D está representado por el número (n), entonces D (n-1) a la n-1 representa el número de elemento de la cantidad de n-1 posición, no se corresponde con el número de formas de la otra y así sucesivamente.
el primer paso , el n-ésimo elemento en una ubicación, tal como la ubicación k, un total de método n-1;
una segunda etapa , el número de elemento de descarga k, entonces hay dos casos:

  • , Entonces n-1 para los elementos restantes, ya que el k-ésimo elemento en posición n, n-2 elementos restantes tienen método D (n-2) n-⑴ ponen en posición;
  • ⑵ k-ésimo elemento no se pone en la posición n, En este momento, para que el elemento n-1, hay método D (n-1);

Suma obtenida
ecuación de estado:D (n) = (n-1) [D (n-2) + D (n-1)]
Caso especial: D (1) = 0, D (2) = 1

Código es el siguiente :

#include<iostream>
using namespace std;

long int Failrecve(int n)
{
	if (n<2)
	{
		return 0;
	}
	if (n == 2)
	{
		return 1;
	}
	if (n == 3)
	{
		return 2;
	}
	return (n - 1)*(Failrecve(n - 1) + Failrecve(n - 2));
}

int main()
{
	int n;
	while (cin >> n)
	{
		cout << Failrecve(n) << endl;
	}
	return 0;
}

Título de dos : cadena de conteo
Título Descripción : El número de longitud de la cadena requerida lexicográfico entre S1 y S2 entre LEN1 y len2 resultó ser mod 10000007.

De entrada Descripción : abarcan cada s1 de datos (longitud inferior a 100), s2 (una longitud de menos de 100), LEN1 (menos de 100.000), len2 (mayor que LEN1, a menos de 100.000).

Ideas de resolución de problemas: En primer lugar, tenemos que averiguar es decir lexicográfico? Índice lexicográfico es decir, desde el inicio de dos cadenas de comparación es 0, el orden lexicográfico de izquierda a derecha para la comparación. Por ejemplo ab, abc entre los mismos de modo que el número de cadenas de ABA, ABB, y el número de cadenas entre ab, bb es AC, AD, AE, az, ba eran 26, por lo que un alto string poder i si el número 26. Aquí debemos determinar en primer lugar el número de la cadena a la cadena s1 diferencia entre una cadena de caracteres, y luego se obtiene el número de la cadena a una diferencia de fase s2, entonces ambos les gustaría reducir la diferencia es la cadena de números.

Código es el siguiente :

#include<iostream>
#include<string>
using namespace std;

int Fun(string& s)
{
	int ret = 0;
	for (int i = 0; i<s.size(); ++i)
	{
		ret = ret * 26 + s[i] - 'a';  //从字符串a到这个字符串有多少个不同的字符串
	}
	return ret;
}

int main()
{
	string s1, s2;
	int l1, l2;
	while (cin >> s1 >> s2 >> l1 >> l2)
	{
		cout << (Fun(s2) - Fun(s1) - 1) % 1000007 << endl; //计算两者之间的差距
	}
}
Publicado 57 artículos originales · ganado elogios 301 · Vistas a 40000 +

Supongo que te gusta

Origin blog.csdn.net/L19002S/article/details/104848414
Recomendado
Clasificación