您的位置:首页 > 其它

cdoj 80 Cube 水题

2015-06-01 23:04 281 查看

[b]Cube[/b]

Time Limit: 20 Sec Memory Limit: 256 MB

题目连接

http://acm.uestc.edu.cn/#/problem/show/80

Description

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,

11×11×11=1331=111+113+115+117+119+121+123+125+127+129+131

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.

[b]Input[/b]

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).

[b]Output[/b]

For each test case, output two integers on a line, the smallest and the largest number among the N continuous odd positive integers whose sum is N×N×N.

[b]Sample Input[/b]

2
11
3

Sample Output

111 131
7 11

HINT

[b]题意[/b]

[b]题解:[/b]

答案就是n(n-1)+1,n(n+1)-1

[b]代码:[/b]

//qscqesze
#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
#include <stack>
typedef long long ll;
using namespace std;
//freopen("D.in","r",stdin);
//freopen("D.out","w",stdout);
#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
#define test freopen("test.txt","r",stdin)
#define maxn 200000
#define mod 10007
#define eps 1e-9
int Num;
char CH[20];
const int inf=0x3f3f3f3f;
const ll infll = 0x3f3f3f3f3f3f3f3fLL;
inline ll read()
{
ll x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
inline void P(int x)
{
Num=0;if(!x){putchar('0');puts("");return;}
while(x>0)CH[++Num]=x%10,x/=10;
while(Num)putchar(CH[Num--]+48);
puts("");
}
//**************************************************************************************

int main()
{
int t=read();
while(t--)
{
int n=read();
cout<<n*(n-1)+1<<" "<<n*(n+1)-1<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: