2019年三峡大学新生编程赛
3.CircleCircleCircle
(1)题目内容:
俗话说:“出题一时爽,样例火葬场”。——某小R
出题组有两个小R,但这并不重要,重要的是为了绞尽脑汁的给新生们挖坑(划掉)想测试数据出来,
小R很难过,很头秃,所以他选择去操场跑圈缓解一下压力。但是按照跑道一圈一圈的跑显然不是不受拘束的小R的风格,
他决定用跑圈圈的方式缓解压力顺便诅咒出题组其他人的头发掉光,很好,今天也是出题组和谐友爱风平浪静的一天。
他跑圈圈的时候想了一个问题,如果他跑了n个圈圈,抽象成为平面上有n个圆,
使这n个圆两两相交(即每两个圆之间恰好有两个交点)后最多能把平面划分成多少个区域?
鉴于小R跑圈圈的时候不甚清醒,所以他请聪明的你帮他解决一下这个问题。
(2)输入描述
第一行一个整数T(0<=T<=20)表示有T组样例,之后的T行每一行一个整数n(0<=n<=1e9),表示有n个圆
(3)输出描述
对于每一个测试样例,输出一个正整数answer,表示被划分的区域数
(4)输入样例
3
1
2
3
(5)输出样例
2
4
8
(6)限制条件
JAVA 运行时间 2000ms 运行内存 3000kb
C++ 运行时间 1000ms 运行内存 3000kb
(7)程序代码
#include<stdio.h>
int main()
{
long long n,a[25],b[25],i;
scanf("%lld",&n);
for(i=0;i<n;i++)
{
scanf("%lld",&a[i]);
if(a[i]!=0)
b[i]=(2+a[i]*2-2)*(a[i]-1)/2+2;
if(a[i]==0)
b[i]=1;
}
for(i=0;i<n;i++)
{
printf("%lld\n",b[i]);
}
return 0;
}
(8)解题思路以及题目分析
本题是一道思维题目,对于规律的总结非常重要,规律在于在加上第n个圆时,划分的面积多了多少块,由此总结,便能找到解题方法。(易错点:当没有圆时,平面还是有一个区域)
(9)题目总结
此题难度适中,主要在于思维和规律的寻找,以及n=0的情况,便不多分析。