2015年第六届蓝桥杯省赛真题之六加法变乘法

来源:互联网 发布:站长查询SEO是什么意思 编辑:程序博客网 时间:2024/05/18 18:41

这套真题是我在csdn上找到的,链接在此 2015年第六届蓝桥杯省赛真题

虽然原博客主是c++类别的,我是java的,但是完全不影响,所有题目都已用java实现,随便吐槽一下原博客主,第四题肯定是被你吃了!再见

6.问题描述:加法变乘法

我们都知道:1+2+3+ ... + 49 = 1225

现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015

比如:

1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015

就是符合要求的答案。

请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。

注意:需要你提交的是一个整数,不要填写任何多余的内容。

结果:16  (共两种情况10,27;16,24)

评解:和原博客主大同小异,把这个数组分成5个部分,第一个乘号前,第一个乘号,第一个乘号后和第二个乘号前,第二个乘号,第二个乘号后,两个乘号两个循环控制即可,上代码~~

public class six加法变乘法 {    public static void main(String[] args) {        b();    }    private static void b(){        int arr[] = new int[51];        for(int i = 1;i<50;i++) arr[i] = i;//给数组赋值        for (int i = 1; i < 50; i++) {//第一个乘号            if(i==10)continue;            for (int j = i+2; j < 50; j++) {//第二个乘号                if ((i-1>=1?he(1, i-1):0)+//第一部分                    arr[i]*arr[i+1]+//第二部分                    (j-i-2>=1?he(i+2, j-1):0)+//第三部分                    arr[j]*arr[j+1]+//第四部分                    (49-j-1>=1?he(j+2, 49):0)==2015) {//第五部分                    System.out.println(i+"  "+j);                }            }        }    }    private static int he(int a,int b){//此方法被调用了2259089次        if(a == b) return a;        if(a + 1 == b) return a+b;        return a + he(a+1, b);    }}

整套题坐下来感觉逻辑不是特别复杂,自己基本能独立完成,感觉明年有希望了~~嘿嘿

0 0
原创粉丝点击