oj1066 : 큐브

항목 요구 사항
설명
UESTC 수학 학교, 수학 등의 WCM 적용으로 학생들. 어느 날, 그는 모든 양의 정수 연속 긍정적 인 홀수 정수의 세제곱의 합으로 표현 될 수 있다는 흥미로운 이론을 발견했다. 예를 들어, 11 * 1,331 = 11 = 111 + 113 + 115 + 117 + 119 + 121 + 123 + 125 + 127 + 129 + 131면 완벽 정리 있도록 WCM 전율 * 11. 그러나 그는 그것을 증명하는 방법을 알고하지 않았다. 그는 좋은 친구 톰 리들 (톰 리들)의 도움을 모색하고 있습니다. 톰 리들 (톰 수수께끼) 프로그래밍 전문, 컴퓨터 과학, 전자 과학 기술 대학의 미국 대학의 학생입니다. 그는 쉽게 정리의 타당성을 증명하기 위해 컴퓨터를 사용합니다. 또한 수 있습니까? N 정수 양을 감안할 때, 당신은 숫자가이 연속 홀수 및 N 개의 정수 긍정적 인 표시 방법을 결정해야한다. 당신은 최소의 출력 N 정수에 필요한 최대 숫자가 될 수 있습니다.
입력 값
은 입력의 제 1 라인의 테스트 케이스의 수를 나타내는 정수를 포함한다. 각 라인상의 테스트 케이스는 N 양의 정수 (0 <N≤1000)을 포함한다.
출력
각 테스트 케이스는 두 정수 행의 출력이 양의 정수 N 연속적인 홀수의 최소 및 최대 수, N * N * N의 합
입력 샘플
2
11
3
출력 샘플
원료
(111) (131)은
일곱 개 11
큐브와 다수 개의 연속 항목의 홀수 개수와 동일한, 예컨대
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 + 41 39 ...... 6 +
디지털 또한 짝수 홀수 디지털 합은 홀수이기 때문에, 짝수
찾을 수 홀수 그 중간 번호 n*n*n/n및 짝수 중앙 두 숫자 n*n*n/n*2
그래서 우리가 최대 값의 최대 및 최소값의 중간 디지털 분 알고는 N이고, 중간 중간의 관계에 따라 해결 될 수있다

#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;
}
게시 38 개 원래 기사 · 원의 찬양 (27) · 전망 3182

추천

출처blog.csdn.net/qq_45891413/article/details/104955359