蓝桥杯2015年省级六、七题解

第六题加法变乘法 我们都知道: 1+2+3+ 。.. + 49 = 1225 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如: 1+2+

第六题加法变乘法


我们都知道: 1+2+3+ 。.. + 49 = 1225
现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015
比如:
1+2+3+.. . +10*11+12+... +27*28+29+...+49 = 2015
就是符合要求的答案。
请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。

思路:

a+(a+1)变为a*(a+1)增大了应该a*(a+1-2)-1

public class Demo {public static void main(String[] args) {for (int i = 1; i <= 46; i++) {for (int j = i + 2; j <= 48; j++) {if (i * (i - 1) - 1 + j * (j - 1) - 1 == 2015 - 1225) {System.out.println(i + " " + j);}}}}
}



 

第七题牌型种类

小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张) ,均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢? 

思路:

一共有十三种类牌每张牌四张,不管花色只管点数,我们可以将13种牌看成13个小堆,我们可以从每个中拿0张牌,1张牌,2张牌,3张牌,4张牌,总共要拿13张牌。正常思维我们现在肯定要遍历13个小堆,同时我们已发现在没遍历到第十三个小堆,比如到第四个或者第五个已经有可能总排数到达13,但我们遍历到之后的小堆时这种情况还会再出现,如果当时就计数则会出现重复计数情况,所以可知一定要遍历到最后一个时再进行计数。

import java.util.Scanner;public class 牌型种类2015_7 {static int ans=0;public static void main(String[] args) {Scanner sc = new Scanner(System.in);p(0,0);System.out.println(ans);}
//定义一个方法其中,n表示遍历到第几个小堆,count表示总共拿了几张牌public static void p(int n,int count){if (count>13||n>13)return;if (n==13&&count==13){ans++;return;}for (int i=0;i<5;i++){p(n+1,count+i);}}
}