Equipos azar ------ codiciosos

n participantes de la competencia se dividieron en equipos m de alguna manera para que cada equipo tiene al menos un participante. Después de la competición cada pareja de participantes del mismo equipo se hicieron amigos.

Su tarea es escribir un programa que va a encontrar el mínimo y el máximo número de pares de amigos que podrían haberse formado por el final de la competición.

Input
La única línea de entrada contiene dos números enteros n y m, separadas por un solo espacio (1 ≤ m ≤ n ≤ 109) - el número de participantes y el número de equipos respectivamente.

Salida de
la única línea de la salida debe contener dos números enteros kmin y Kmax - el posible número mínimo de pares de amigos y el número máximo posible de pares de amigos respectivamente.

Ejemplos
de entrada
5 1
de salida
10 10

Entrada
3 2
Salida
1 1

Entrada
6 3
de salida
3 6

Nota
En la primera muestra todos los participantes entrar en un equipo, por lo que habrá exactamente diez pares de amigos.

En la segunda muestra en cualquier posible arreglo de equipo siempre tendrá dos participantes y el otro equipo siempre tendrá un participante. Por lo tanto, el número de pares de amigos siempre será igual a uno.

En el tercer número mínimo de la muestra de amistades recién formadas pueden ser logrados si los participantes se dividieron en equipos que consta de 2 personas, el número máximo se puede lograr si los participantes se dividieron en equipos de 1, 1 y 4 personas.

El significado de los problemas

n m individual asignado a un equipo, cada uno de los compañeros de equipo del equipo que va a llegar a ser buenos amigos, buenos amigos hasta por lo menos preguntan cuántos son, respectivamente

Ideas de resolución de problemas

Principio también carece de ideas, sospechan varios casos, se encontró varios conjuntos de datos de pruebas que demostraron concentrados en un solo equipo de hombre, otros equipos han puesto a una persona un buen amigo de este caso hasta un logarítmica, si cada equipo que comparte las palabras del número mínimo de
puntos propenso a errores:
Tenga en cuenta que los datos de distancia y largo tiempo
de revisar es el primero o el máximo de salida primera salida min, que engaña al revés ... este estúpido error Sólo voy a hacerlo, wa la varios cabellos

la implementación del código

#include<iostream>
using namespace std;
typedef long long ll;
int main()
{
	long long n, m, max = 0, min = 0;
	cin >> n >> m;
	if (m == 1)//一队的话最大值最小值相等
	{
		max = n * (n - 1) / 2;
		cout << max << " " << max << endl;
		return 0;
	}
	else
	{
		long long t = n - m + 1,x = n / m, y = n % m;
		max = t * (t - 1) / 2;
		min = (m - y) * x*(x-1)/2 + y * x*(x+1)/2;
		cout << min << " " << max << endl;
	}
	return 0;
}

La palabra en clave no es fácil, al igual que dejar un
encomiable delegado, entregar una fragancia ~

Publicado 26 artículos originales · alabanza ganado 30 · vistas 2419

Supongo que te gusta

Origin blog.csdn.net/SDAU_LGX/article/details/104931041
Recomendado
Clasificación