d297 - 算算算....Lunatic
題目描述
題目要求計算邊長為 n 的正三角形中包含多少個更小的正三角形。
解題思路
觀察輸入輸出可以發現一個規律。對於邊長為 n 的正三角形,其中包含的小正三角形數量可以通過一個公式直接計算得出。公式為 m*(2ii-(2i-1)(m-1))/2,其中 i 是正三角形的邊長,m 的計算方式為 (n%2)?(n+3)/2:(n+2)/2。程式碼直接實現了這個公式的計算。
複雜度分析
- 時間複雜度: O(1)
- 空間複雜度: O(1)
程式碼
#include <stdio.h>
int main(){
long long int i;
while(scanf("%lld",&i)>0){
long long int m,n=i-1;
(n%2)?m=(n+3)/2:m=(n+2)/2;
printf("%lld\n",m*(2*i*i-(2*i-1)*(m-1))/2);}
}