记录编号 |
209082 |
评测结果 |
WWTA |
题目名称 |
w函数 |
最终得分 |
25 |
用户昵称 |
GaoErFu |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
1.002 s |
提交时间 |
2015-11-21 00:27:56 |
内存使用 |
0.29 MiB |
显示代码纯文本
#include<stdio.h>
int mi(int a,int b)
{
int r=1,base;
base=a;
while(b!=0)
{
if(b&1)
r=base*r;
base=base*base;
b>>=1;
}
return r;
}
int w(int a,int b,int c)
{
if(a>20||b>20||c>20)
return mi(2,20);
else if(a==b&&b==c&&c==a)
return mi(2,a);
else if(a==b&&a<=20&&a>0)
printf("%d\n",mi(2,a));
else if(b==c&&b<=20&&b>0)
printf("%d\n",mi(2,b));
else if(c==a&&c<=20&&c>0)
printf("%d\n",mi(2,c));
else if(a<=0||b<=0||c<=0)return 1;
else if(a<b&&b<c)return w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c);
else return w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1);
}
int main()
{
freopen("wwww.in","r",stdin);
freopen("wwww.out","w",stdout);
int a,b,c,max=0,min=0;
while(1)
{
scanf("%d%d%d",&a,&b,&c);
if(a==-1&&b==-1&&c==-1)
break;
else printf("%d\n",w(a,b,c));
}
return 0;
}