0
点赞
收藏
分享

微信扫一扫

2015年蓝桥省赛题目(大学B组)1~8

生态人 2022-03-30 阅读 107

三角形面积

答案:28

可以看到三角形所外接的是一个8*8的正方形,把正方形内除目标三角形外的其他三角形面积求出 。(很好求,都是直角三角形)==>(4*6+2*8+4*8)/2=36

所以答案就是:64-36=28

public class Main{
    public static void main(String[] args){
        System.out.println(64-36);
    }
}

立方变自身

答案:6

需要注意的是:X立方按位累加和一般不会很大,可以用电脑上的计算器试一下,比如99,结果是970299,各位累加结果不符合题意。

代码如下:

public class Main {
    private static int ans;
    public static void main(String[] args) {
        for (int i=1;i<99;i++){
            int i1=i*i*i;
            int sum=sum(i1);
            if (sum==i) {
                System.out.println(i+" "+i1);
                ans++;
            }
        }
        System.out.println(ans);
    }
    private static int sum(int x){
        String s=String.valueOf(x);
        int sum=0;
        for (int i=0;i<s.length();i++){
            sum+=s.charAt(i)-'0';
        }
        return sum;
    }
}

三羊献瑞

答案:1085

这题可以转换成一个:

                                a b c d 

                     +          e f g b 

                   --------------------------------

                               e f c b i

根据加法进位,e=1,这是确定的,又因为进位,如果a=9,则f=0,且c+g一定得进一位,即c=b+1,c+g>10。所以我们只需要枚举b,d,g,i。并且范围应该是[2,8],且不能与其他重复。

public class Main {

	public static void main(String[] args) {
		for(int b=2;b<9;b++) {
			for(int d=2;d<9;d++) {
				if(b==d) continue;
				for(int g=2;g<9;g++) {
					if(g==b || g==d)continue;
					int c=b+1;
					if(c==b || c==d ||c==g)continue;
					if(c+g<10)continue;
					int sum=9000+b*100+c*10+d+1000+g*10+b;
					for(int i=2;i<9;i++) {
						if(i==b || i==d || i==g || i==c)continue;
						if(sum<=(10000+c*100+b*10+i)&&sum>=(10000+c*100+b*10+i)) {
							System.out.printf("%2d%d%d%d\n",9,b,c,d);
							System.out.printf("%2d%d%d%d\n",1,0,g,b);
							System.out.printf("%d\n",sum);
							System.out.printf("---------\n");
						}
					}
				}
			}
		}

	}

}

循环节长度

 答案: return v.size() -v.indexOf(n);

九数组分数

答案:{int t=x[k]; x[k]=x[i]; x[i]=t;}  

加法变乘法

答案:16

其实,我们可以遍历*的位置,第一个*考虑最极限的位置应该是46,因为它得给第二个*留位置。

并且,更换符号后,其实除了i+(i+1)和j+(j+1)有变化其他部分都没变。

所以可以看作最终结果的差值其实就等于[i*(i+1)+j*(j+1)]和[i+(i+1)+j+(j+1)]的差值。

public class Main {
	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)-(i+i+1)+j*(j+1)-(j+j+1)==2015-1225) {
					System.out.println(i+" "+j);
				}
			}
		}

	}

}

 牌型种数

答案:3598180

public class Main{
	private static int ans;
	public static void main(String[] args) {
		f(0,0);
		System.out.print(ans);
	}
	private static void f(int k,int cnt) {
		if(k>13||cnt>13)return;
		if(k == 13 && cnt ==13) {
			ans++;
			return;
		}
		for(int i=0;i<5;i++) {
			f(k+1,cnt+i);
		}
	}

}

 饮料换购

其实每三个瓶盖换换一瓶=> 每三瓶n-2

最终他喝到的:每进行一次n-2,就加3。直到最后不够三瓶盖了,再加上剩余的,所得结果即所求

import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int ans=0;
		while(n>=3) {
			n-=2;
			ans+=3;
		}
		ans+=n;
		System.out.print(ans);
	}

}

举报

相关推荐

0 条评论