Problem D: 平面划分
Description
一条直线能够将平面分成2部分,两条直线能够将平面分成4部分,而对于一条“V”型线而言,平面被分成2部分,两条“V”型线最多能够将平面分成7部分。对于椭圆封闭曲线对平面的划分又将不一样,任意两个椭圆至多有两个交点。现在给定一个N,你能够计算出三种不同情况下,空间最多被划分出多少个部分吗?
Input
若干组测试数据,每组测试数据占一行,每行一个正整数N(1<=N<=10^6)。
Output
每组数据输出一行,每行3个整数,之间用空格隔开。
分别输出N条直线,N条“V”型线,和N个椭圆最多能够将平面划分成多少部分,结果保证在10^18以内?
Sample Input
12
Sample Output
2 2 24 7 4
// File Name: d.cpp // Author: rudolf // Created Time: 2013年04月12日 星期五 21时11分57秒 #include<vector> #include<list> #include<map> #include<set> #include<deque> #include<stack> #include<bitset> #include<algorithm> #include<functional> #include<numeric> #include<utility> #include<sstream> #include<iostream> #include<iomanip> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<ctime> #include<iostream> #include<algorithm> #include<cstring> #include<cstdio> #include<queue> #include<cstdlib> using namespace std; long long zhixian (long long n ) { return n*(n+1)/2+1; } long long zhexian (long long n ) { return 2*n*n-n+1; } long long quxian (long long n ) { return n*n-n+2; } int main() { // freopen("Text.txt","r",stdin); //int i, j, k ,l ,m ,n ,T ; long long n ; while(~scanf("%lld",&n)) { printf("%lld %lld %lld\n",zhixian(n),zhexian(n),quxian(n)); } return 0; }