oj1066: Cubo

Temas requisitos
descritos
estudiantes como UESTC aplica escuela matemáticas, WCM como las matemáticas. Un día, se encontró con un teorema interesante que todo entero positivo se puede expresar como la suma del cubo de números enteros impares positivos consecutivos. Por ejemplo, 11 * 11 * 11 = 1331 = 111 + 113 + 115 + 117 + 119 + 121 + 123 + 125 + 127 + 129 + 131 cara tan perfecto teorema, el WCM encantados. Pero no sabía cómo lo demuestran. Se buscó la ayuda de su buen amigo Tom Riddle (Tom Riddle). Tom Riddle (Tom Riddle) es un estudiante del Colegio Americano de Ciencias de la Computación de la Universidad de Ciencia y Tecnología Electrónica, se especializa en la programación. Se usa una computadora para probar fácilmente la validez del teorema. También se puede? Dado un número entero positivo N, debe determinar cómo los números indican que este es un número entero positivo N número de impares consecutivos y. Sólo es necesario para dar salida a N enteros en el mínimo y el máximo puede ser.
El valor de entrada
de la primera línea de la entrada contiene un número entero que indica el número de casos de prueba. Cada caso de prueba en una línea contiene un número entero positivo de N (0 <N≤1000).
Output
Para cada caso de prueba, la salida en la línea dos números enteros, este es un número entero positivo N números mínimos y máximos impares consecutivos, la suma de N * N * N.
La entrada de la Muestra
2
11
3
la muestrear la salida
Raw
111 131 es
siete 11
de cubo y un número igual al número impar de elementos consecutivos, tal como
8 = 3 + ...... 2 5
27 = 7 + 9 + 3 ...... 11
64 = 13 + 15 + ...... 19 17 + 4
125 = 21 + 23 + 25 + 27 + 29 ....... 5
16 = 31 + 33 + 35 + 37 + 39 + 41 ...... 6
debido a que una suma digital impar es impar, un número par es un número par de adición digitales
se puede encontrar que extraño los números en el medio n*n*n/n, y el Medio dos números para un número par n*n*n/n*2
por lo largos como sabemos el valor máximo max y el valor mínimo intermedio min digitales pueden ser resueltos de acuerdo con la relación entre n y el intermedio-mediados

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<queue>
#include<math.h>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
	int n, m, t;
	cin >> n;
	while (n--)
	{
		cin >> m;
		t = m;
		long long max;
		max = m * m * m;
		int mid;
		mid = max / t;
		if(m%2==1)
			cout << mid - 2 * ((t - 1) / 2)<<" "<<mid+ 2 * ((t - 1) / 2) << endl;
		else
		{
			int left, right;
			left = mid - 1;
			right = mid + 1;
			if (left + right == max)
				cout << left << " " << right << endl;
			else
				cout << left - 2 * ((t - 1) / 2) << " " << right + 2 * ((t - 1) / 2) << endl;
		}
	}
	return 0;
}
Publicado 38 artículos originales · ganado elogios 27 · vistas 3182

Supongo que te gusta

Origin blog.csdn.net/qq_45891413/article/details/104955359
Recomendado
Clasificación