一條直線能夠將平面分成2部分,兩條直線能夠將平面分成4部分,而對於一條“V”型線而言,平面被分成2部分,兩條“V”型線最多能夠將平面分成7部分。對於橢圓封閉曲線對平面的劃分又將不一樣,任意兩個橢圓至多有兩個交點。現在給定一個N,你能夠計算出三種不同情況下,空間最多被劃分出多少個部分嗎?
若干組測試資料,每組測試資料佔一行,每行一個正整數N(1<=N<=10^6)
每組資料輸出一行,每行3個整數,之間用空格隔開。
分別輸出N條直線,N條“V”型線,和N個橢圓最多能夠將平面劃分成多少部分,結果保證在10^18以內。
輸入 1 2輸出 2 2 24 7 4本題很簡單,直接代公式。具體推導過程,看你數學基礎了(高中生照樣能完成的)列出它們之間的遞迴關係:直線: f(n)=f(n-1)+n;v型直線:f(n)=f(n-1)+4n-3;橢圓(兩兩相交只要兩個點):f(n)=f(n-1)+2(n-1);如果不求,直接去遞迴,直接就TLE了。方法:累加相消。舉一個例子:對於f(n)=f(n-1)+n;f(n)-f(n-1)=nf(n-1)-f(n-2)=n-1;f(n-2)-f(n-3)=n-2;....... f(2)-f(1)=2;左右相加得:f(n)-f(1)=n+n-1+n-2+......n-(n-2);故:f(n)=n(n-1)-(n-1)(n-2)/2+2;化解得:f(n)=(n^2+n+2)/2;另外兩個:同樣的方法。
#include<stdio.h>int main(){ long long n,L1,L2,L3; while(scanf("%lld",&n)!=-1) { L1=(n*n+n+2)/2; //直線劃分平面 L2=2*n*n-n+1; //V直線劃分平面 L3=n*n-n+2; //橢圓(兩兩相交只有2個點)如果是四個 2*n*n-2*n+2 printf("%lld %lld %lld\n",L1,L2,L3); } return 0;}