L国是一个有着优美景色且物产丰富的国家,不少人都喜欢来这里旅游而且喜欢带走一些记念品,大神同窗也不例外。距离开L国的时间愈来愈近了,大神同窗正在烦恼给她可爱的小伙伴们带什么记念品好,如今摆在大神同窗面前的有三类记念品A, B, C能够选择,每类记念品各有N种。其中种类为A_i, B_i, C_i的记念品价值均为i, 且分别有N+1-i个剩余。如今大神同窗但愿在三类记念品中各挑选一件而后赠送给她的三名可爱的小伙伴,可是她又不但愿刚好挑出来两件价值相同的记念品,由于这样拿到相同价值记念品的两位小伙伴就会认为大神同窗偏袒另外一位小伙伴而不理睬她超过一星期。如今,大神同窗但愿你买到的三件记念品能让三位小伙伴都开心而且不和她闹别扭,她想知道一共有多少种不一样挑选的方法?大数据
由于方案数可能很是大,大神同窗但愿知道挑选记念品的方案数模10^9+7以后的答案。spa
第一行包括一个数T,表示数据的组数。code
接下来包含T组数据,每组数据一行,包括一个整数N。blog
对于每组数据,输出一行“Case x: ”,其中x表示每组数据的编号(从1开始),后接一个数,表示模10^9+7后的选择记念品的方案数。内存
小数据:it
1<=T<=10io
1<=N<=100class
大数据:方法
1<=T<=1000im
1<=N<=10^18
对于第二组数据,合法的方案有如下几种,(X,Y,Z)表示选择了A类记念品中价值为X的,B类记念品中价值为Y的,C类记念品中价值为Z的。
(1,1,1): 3*3*3=27种
(1,2,3): 3*2*1=6种
(1,3,2): 3*1*2=6种
(2,1,3): 2*3*1=6种
(2,2,2): 2*2*2=8种
(2,3,1): 2*1*3=6种
(3,1,2): 1*3*2=6种
(3,2,1): 1*2*3=6种
(3,3,3): 1*1*1=1种
一共27+6+6+6+8+6+6+6+1=72种选择记念品的方案
注意,如(1,1,2), (2,3,3), (3,1,3)都由于刚好选择了两件价值相同的记念品,因此并非一种符合要求的记念品选择方法。
2 1 3
Case 1: 1 Case 2: 72
直接暴搜便可
1 //source here 2 #include <stdio.h> 3 4 5 int main() 6 { 7 int T,n; 8 int i,j,k,l; 9 int all; 10 int txxx=0; 11 int tmp=1000000007; 12 scanf("%d",&T); 13 14 for(l=0; l <T; l++) 15 { 16 scanf("%d",&n); 17 all=0; 18 for(i=1; i<=n; i++){ 19 all=all+(n+1-i)*(n+1-i)*(n+1-i); 20 } 21 for(i=1; i<=n; i++){ 22 23 for(j=1; j<=n; j++){ 24 if(i==j)continue; 25 for(k=1; k<=n; k++) 26 { 27 if(k==j || k==i)continue; 28 txxx=(n+1-i)*(n+1-j)*(n+1-k); 29 all+=txxx; 30 all=all%tmp; 31 } 32 } 33 } 34 35 printf("Case %d: %d\n",l+1,all); 36 } 37 return 0; 38 }