第七届决赛试题

1、平方末尾

能够表示为某个整数的平方的数字称为“平方数”
比如,25,64
虽然无法立即说出某个数是平方数,但经常可以断定某个数不是平方数。
因为平方数的末位只可能是:[0, 1, 4, 5, 6, 9] 这6个数字中的某个。
所以,4325435332必然不是平方数。

如果给你一个2位或2位以上的数字,你能根据末位的两位来断定它不是平方数吗?

请计算一下,一个2位以上的平方数的最后两位有多少种可能性?

注意:需要提交的是一个整数,表示2位以上的平方数最后两位的不同情况数。
不要填写任何多余内容(比如,说明解释文字等)

思路:
暴力破解,把int型的平方数变为字符串,再利用函数截取末尾2位,根据set集合元素不重复的特性,存入到set集合中,最后输出set集合的大小即可

代码如下:
答案:22

public static void main(String[] args) {
        Set<String> ss=new HashSet<String>();
        String s=null;
        String n=null;
        for(int i=10;i<=10000;i++){
            s=i*i+"";
            //截取最后两位
            n=s.substring(s.length()-2);
            ss.add(n);
        }
        System.out.println(ss.size());
    }

2、七星填数

七星填数详解博客

3、打印数字

打印数字
这里写图片描述

答案:\di[cc[j]-‘0’][i]

public class Main03 {
    public static void main(String[] args) {
            f(2016);
    }

    public static void f(int n){
        String[][] di = 
            {{" 00000 ",
            "0     0",
            "0     0",
            "0     0",
            "0     0",
            "0     0",
            " 00000 "},
            {"     1 ",
            "   1 1 ",
            "     1 ",
            "     1 ",
            "     1 ",
            "     1 ",
            "   1111"},
            {" 22222 ",
            "2     2",
            "      2",
            "     2 ",
            "   2   ",
            " 2    2",
            "2222222"},
            {" 33333 ",
            "3     3",
            "      3",
            "  3333 ",
            "      3",
            "3     3",
            " 33333 "},
            {"   44  ",
            "  4 4  ",
            " 4  4  ",
            "4   4  ",
            "4   4  ",
            "4444444",
            "    4  "},
            {" 55555 ",
            " 5     ",
            "555555 ",
            "      5",
            "      5",
            "5     5",
            " 55555 "},
            {" 6666  ",
            "6      ",
            "666666 ",
            "6     6",
            "6     6",
            "6     6",
            " 66666 "},
            {"7777777",
            "7    7 ",
            "    7  ",
            "   7   ",
            "  7    ",
            " 7     ",
            " 7     "},
            {" 88888 ",
            "8     8",
            "8     8",
            " 88888 ",
            "8     8",
            "8     8",
            " 88888 "},
            {" 99999 ",
            "9     9",
            "9     9",
            " 999999",
            "      9",
            "9     9",
            " 99999 "}};
        char[] cc = (""+n).toCharArray(); 
        for(int i=0; i<di[0].length; i++){
            for(int j=0; j<cc.length; j++){
                System.out.print(di[cc[j]-'0'][i]+" ");  //填空位置
            }
            System.out.println();
        }
    }
}

4、愤怒小鸟

愤怒小鸟

X星球愤怒的小鸟喜欢撞火车!

一根平直的铁轨上两火车间相距 1000 米
两火车 (不妨称A和B) 以时速 10米/秒 相对行驶。

愤怒的小鸟从A车出发,时速50米/秒,撞向B车,
然后返回去撞A车,再返回去撞B车,如此往复….
两火车在相距1米处停车。

问:这期间愤怒的小鸟撞 B 车多少次?

注意:需要提交的是一个整数(表示撞B车的次数),不要填写任何其它内容。

代码

public class Main04 {
    public static void main(String[] args) {
        f(1000);
        //注意:这里算的i是包括撞A车的,因此要除以2
        if(i%2==0){
            System.out.println(i/2);
        }else{
            System.out.println((i+1)/2);
        }
    }
    public static int i=0;
    public static double time;
    /**
     * 
     * @param len 两车之间的距离
     */
    public static int f(double len){
        time=len/60;    //表示小鸟从一个车到另一个车的时间
        len=len-time*2*10;  //表示小鸟碰到车后,还剩的距离
        if(len<=1){
            return 0;
        }
        i++;
        return f(len);
    }
}

5、反幻方

反幻方博客详解

6、

7、

8、

猜你喜欢

转载自blog.csdn.net/shaonianbz/article/details/80145301