D - Cube
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
As a student of the applied mathematics school of UESTC, WCM likes mathematics. Some day he found an interesting theorem that every
positive integer's cube can be expressed as the sum of some continuous odd positive integers. For example,
Facing such a perfect theorem, WCM felt very agitated. But he didn't know how to prove it. He asked his good friend Tom Riddle for help. Tom
Riddle is a student of the computer science school of UESTC and is skillful at programming. He used the computer to prove the theorem's
validity easily. Can you also do it?
Given a positive integer N , you should determine how to express this number as the sum of N continuous odd positive integers. You only
need to output the smallest and the largest number among the N integers.
Input
The input contains an integer on the first line, which indicates the number of test cases. Each test case contains one positive integer N
on a single line( 0<N≤1000 ).
Output
For each test case, output two integers on a line, the smallest and the largest number among the N N continuous odd positive integers
whose sum is N×N×N .
Sample input and output
Sample Input | Sample Output |
---|---|
2 11 3 | 111 131 7 11 |
Source
My Solution
#include <iostream>
#include <cstdio>
using namespace std;
//偶数时直接通过奇数时的公式,由规律得出
int main()
{
int T, N;
scanf("%d", &T);
while(T--){
scanf("%d", &N);
if(N&1) printf("%d %d\n", N*N - (N/2)*2, N*N + (N/2)*2);
else printf("%d %d\n", N*N - (N/2)*2 + 1, N*N + (N/2)*2 - 1);
}
return 0;
}
Thank you!