第六届蓝桥杯省赛

一、三角形面积
这里写图片描述

如【图1】所示。图中的所有小方格面积都是1。
那么,图中的三角形面积应该是多少呢?

请填写三角形的面积。不要填写任何多余内容或说明性文字。

分析:(该正方形的面积减去其他三个三角形的面积即可)
这里写图片描述
代码如下:

package s_1;
public class Main {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.print(8*8-2*8/2-4*6/2-4*8/2);
    }
}

二、立方变自身


立方变自身

观察下面的现象,某个数字的立方,按位累加仍然等于自身。
1^3 = 1 
8^3  = 512    5+1+2=8
17^3 = 4913   4+9+1+3=17
...

请你计算包括1,8,17在内,符合这个性质的正整数一共有多少个?

请填写该数字,不要填写任何多余的内容或说明性的文字。

代码如下:

package s_2;
public class Main {
    /**
     * 答案:6个
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        for(int i=1;i<=100000;i++){
            int s=i*i*i;
            //将基本类型转换为string类型。
            String a=Integer.toString(s);
            int res=0;
            for(int j=0;j<a.length();j++){
                res+=a.charAt(j)-'0';
            }
            if(res==i)
                System.out.println(i);      
        }
    }
}

三、三羊献瑞(切记加法运算首位不为0)

三羊献瑞

观察下面的加法算式:

      祥 瑞 生 辉
  +   三 羊 献 瑞
-------------------
   三 羊 生 瑞 气

(如果有对齐问题,可以参看【图1.jpg】)

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。

请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。

分析:

由于 "三"是数字的首位,低位的数字进位后必然为1,所以能先确定 ”三“为11).直接进行删选只要每个数的首位不为0,即可。代码的方式为1)的方式。
2).更方便的是直接以e为1作为条件进行删选。

代码如下:

package s_3;
public class Main {
    /*
     *
     *答案为 1085
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        for(int a=0;a<=9;a++){
            for(int b=0;b<=9;b++){
                for(int c=0;c<=9;c++){
                    for(int d=0;d<=9;d++){
                        for(int e=0;e<=9;e++){
                            for(int f=0;f<=9;f++){
                                for(int g=0;g<=9;g++){
                                    for(int h=0;h<=9;h++){
                                if(a!=b&&a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h&&
                                        b!=c&&b!=d&&b!=e&&b!=f&&b!=g&&b!=h
                                        &&c!=d&&c!=e&&c!=f&&c!=g&&c!=h&&
                                        d!=e&&d!=f&&d!=g&&d!=h&&
                                        e!=f&&e!=g&&e!=h&&
                                        f!=g&&f!=h&&
                                        g!=h){

                                    int m=a*1000+b*100+c*10+d;
                                    int n=e*1000+f*100+g*10+b;
                                    int k=e*10000+f*1000+c*100+b*10+h;
                                    if(m+n==k){
                                        if(e!=0&&a!=0){

                                            System.out.print(e);
                                            System.out.print(f);
                                            System.out.print(g);
                                            System.out.print(b);
                                            System.out.println();
                                            break;
                                        }
                                    }

                                }
                                    }

                            }

                            }

                        }   
                    }
                }   
            }   
        }
    }
}

四、循环节长度

两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
比如,11/13=6=>0.846153846153.....  其循环节为[846153] 共有6位。
下面的方法,可以求出循环节的长度。

请仔细阅读代码,并填写划线部分缺少的代码。

    public static int f(int n, int m)
    {
        n = n % m;  
        Vector v = new Vector();
        for(;;)
        {
            v.add(n);
            n *= 10;
            n = n % m;
            if(n==0) return 0;
            if(v.indexOf(n)>=0)  _________________________________ ;  //填空
        }
    }
注意,只能填写缺少的部分,不要重复抄写已有代码。不要填写任何多余的文字。

思路:
这里写图片描述
所用到的函数:

这里写图片描述

这里写图片描述

此题目比较特殊,在vector中的第0位,为其第一次出现的位置。
但仍应该考虑全面一些,此题在数11之前还有其他的数字,所以应用当前vector的长度减去其第一次出现时的下标。

代码如下:

package s_4;
import java.util.Vector;
public class Main {
    public static int f(int n, int m)
    {
        n = n % m;  
        Vector v = new Vector();
        for(;;)
        {
            v.add(n);
            n *= 10;
            n = n % m;
            if(n==0) return 0;
            if(v.indexOf(n)>=0)  return v.size()-v.indexOf(n);  //填空
        }
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println(f(11,13));
        System.out.println(f(1,3));
    }
}

五、


九数组分数

1,2,3...9 这九个数字组成一个分数,其值恰好为1/3,如何组法?
下面的程序实现了该功能,请填写划线部分缺失的代码。

public class A
{
    public static void test(int[] x)
    {
        int a = x[0]*1000 + x[1]*100 + x[2]*10 + x[3];
        int b = x[4]*10000 + x[5]*1000 + x[6]*100 + x[7]*10 + x[8];
        if(a*3==b) System.out.println(a + " " + b);
    }

    public static void f(int[] x, int k)
    {
        if(k>=x.length){
            test(x);
            return;
        }
        for(int i=k; i<x.length; i++){
            {int t=x[k]; x[k]=x[i]; x[i]=t;}
            f(x,k+1);
            _______________________________________       // 填空
        }
    }

    public static void main(String[] args)
    {
        int[] x = {1,2,3,4,5,6,7,8,9};      
        f(x,0);
    }
}

注意,只能填写缺少的部分,不要重复抄写已有代码。不要填写任何多余的文字。

答案为:

{int t=x[k]; x[k]=x[i]; x[i]=t;}

六、加法变乘法

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

比如:
1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015
就是符合要求的答案。

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

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

这里写图片描述
代码如下:

package s_6;
public class Main {
    /**
     * 答案为:16
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        由于为递增,并且不重复的状态。
        for(int i=1;i<=49;i++){
            for(int j=i+1;j<=49;j++){
                for(int k=j+1;k<=49;k++)
                    for(int l=k+1;l<=49;l++){
                        int m=1225-i-j-k-l;
                        /*
                         * 相邻那个条件很重要
                         * j==i+1&&l==k+1  !!!!
                         */
                        if(m+i*j+k*l==2015&&j==i+1&&l==k+1)
                            System.out.println(i);
                    }
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_36717487/article/details/79768155