保证输入的数在 [−9223372036854775808,9223372036854775807] 之间,并且是整数。
不爆
刚刚好,一个数不差(我哭死
(这是要把long long的范围背完啊啊啊
(以为用long long装不下的受害者代码:
(没写完,看个思想大概是:把字符串转化成数字
#include<cstring>
#include<iostream>
using namespace std;
#define sc(i) scanf("%d",&i)
int ans[40][40][40];
int z(int a,int b,int c){
if(a<=0||b<=0||c<=0){
return 1;
}else if(a>20||b>20||c>20){
return z(20,20,20);
}else if(a<b&&b<c){
if(!ans[a][b][c]){
ans[a][b][c]=z(a,b,c-1)+z(a,b-1,c-1)-z(a,b-1,c);
}
return ans[a][b][c];
}else{
if(!ans[a][b][c]){
ans[a][b][c]=z(a-1,b,c)+z(a-1,b-1,c)+z(a-1,b,c-1)-z(a-1,b-1,c-1);
}
return ans[a][b][c];
}
}
int main(){
// freopen("1.txt","r",stdin);
string a,b,c;
int q,w,e;
while(1){
cin>>a>>b>>c;
a=a.substr(0,6);
b=b.substr(0,6);
c=c.substr(0,6);
q=stoi(a);
w=stoi(b);
e=stoi(c);
if(q==-1&&w==-1&&e==-1){
break;
}
else{
printf("w(%d, %d, %d) = %d\n",q,w,e,z(q,w,e));
}
}
}