NC21729. 被打脸的潇洒哥
描述
平面上有n个圆,求使这n个圆两两相交(即每两个圆之间恰好有两个交点)后最多能把平面划分成多少个区域。
输入描述
一个正整数t,表示有t()组数据。
接下来t行,每行一个整数n(),代表平面内圆的个数。
输出描述
输出共t行。每行一个正整数,表示对应的n个圆将该平面划分成的最大的区域数。
示例1
输入:
3 1 2 3
输出:
2 4 8
说明:
第一个样例,平面只有一个圆,此时将平面划分成圆内和圆外两个区域;C++14(g++5.4) 解法, 执行用时: 3ms, 内存消耗: 488K, 提交时间: 2018-12-23 13:29:21
#include <bits/stdc++.h> using namespace std; int main() { int T; cin>>T; while(T--) { int n; cin>>n; if(n==0) cout<<1<<endl; else cout<<n*n-n+2<<endl; } return 0; }
C++11(clang++ 3.9) 解法, 执行用时: 4ms, 内存消耗: 480K, 提交时间: 2018-12-23 12:32:12
#include<stdio.h> int main() { int T,n;scanf("%d",&T); while(T--) { scanf("%d",&n); if(!n)printf("1\n"); else printf("%d\n",2+n*(n-1)); } return 0; }
Python3(3.5.2) 解法, 执行用时: 27ms, 内存消耗: 3428K, 提交时间: 2018-12-23 13:02:59
T = int(input()) for t in range(T): n = int(input()) print(n*n-n+2 if n else 1)