题意大概就是有三种颜色不同的球,每次放一个,可以放在开头也可以放在中间,如果放在开头,则累加第一个球后面颜色不同的球的种类,若放在中间,则以球为中间点,左侧颜色不同种类的球和右侧不同种类的球数目累加。需要考虑两种情况,一种是未饱和,罗列出可得公式sum*(sum-1)/2,第二种则是饱和状态,当三种颜色球都达到6个以上时,每次只能累加6。注意不能用int,应该用long long,因为int最多能存2^31-1也就大概是2e9+,所也应用long long切记!
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
long long r,y,b,sum,x;
while(scanf("%lld %lld %lld",&r,&y,&b)!=EOF)
{
sum=0;
if(r>2)
{
sum+=2;
r=r-2;
}
else
{
sum+=r;
r=0;
}
if(y>2)
{
sum+=2;
y=y-2;
}
else
{
sum+=y;
y=0;
}
if(b>2)
{
sum+=2;
b=b-2;
}
else
{
sum+=b;
b=0;
}
x=sum*(sum-1)/2+sum*(r+y+b);
printf("%lld\n",x);
}
return 0;
}