NC223417. 哥三好
描述
正所谓三人成行,阿猫、阿狗、阿猪三兄弟又到了一年一度的已婚男人单身日,他们每年都会相聚网咖门口准备包夜。
已知他们三每人都有一个偷偷藏起来的小金库,都是为了在这一年一度的日子中发挥作用。这哥三都觉得请客的时候贼有面子,所以都会抢着请客,即其中一人一次性买三个人的单。已知该网吧的电脑分为三个价位,分别为100元,150元,250元每晚/人,每次他们都会定三台价位相同的电脑进行包夜。
假设这三兄弟往后都不会往这个小金库藏钱,而且小金库的钱只会用来网吧包夜。请问在给定三个人小金库存钱量的情况下,如果将每年的请客情况记录下来,直到他们花到他们三全部都去不起网吧的时候,有多少种不同的请客记录。规定只要中间有一年请客的人不同或者请客的电脑价位不同即算不同,最终答案对1000000007取模。
输入描述
给定3个非负整数,,代表三个人的小金库存量,满足:,,。
输出描述
输出一个数代表有多少种不同的请客记录,答案对1000000007取模。
示例1
输入:
300 300 300
输出:
6
示例2
输入:
100 100 100
输出:
1
C++ 解法, 执行用时: 304ms, 内存消耗: 18740K, 提交时间: 2021-07-24 09:29:22
#include<bits/stdc++.h> using namespace std; map<int,map<int,map<int,long long> > >f; const long long mod=1000000007; long long duqi(int a,int b,int c){ if(a<0||b<0||c<0)return 0; if(a<300&&b<300&&c<300)return f[a][b][c]=1; if(f[a][b][c]!=0)return f[a][b][c]; return f[a][b][c]=(duqi(a-300,b,c)+duqi(a-450,b,c)+duqi(a-750,b,c)+duqi(a,b-300,c)+duqi(a,b-450,c)+duqi(a,b-750,c)+duqi(a,b,c-300)+duqi(a,b,c-450)+duqi(a,b,c-750))%mod; } int main() { int a,b,c,i,j,k,l,n; scanf("%d%d%d",&a,&b,&c); printf("%lld",duqi(a,b,c)); }