蓝桥2016 JavaB题解

主要有三个和A不一样,比较简单
3、凑算式
题目:
B DEF
A + — + ------- = 10
C GHI
(如果显示有问题,可以参见【图1.jpg】)
这个算式中AI代表19的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。

思路:蓝桥喜爱的全排列题目

代码:

public class C {
 static int ans=0;
 public static void main(String[] args) {
  double a[]= {1,2,3,4,5,6,7,8,9};
  show(a,0); 
  System.out.println(ans);
 }
 private static void show(double[] a, int n) {
  if(n==a.length-1) {
   if(a[0]+a[1]/a[2]+(a[3]*100+a[4]*10+a[5])/(a[6]*100+a[7]*10+a[8])==10) {
    ans++;
    return;
   }
  }
  for(int i=n;i<a.length;i++) {
   {double temp=a[i];a[i]=a[n];a[n]=temp;}
   show(a,n+1);
   {double temp=a[i];a[i]=a[n];a[n]=temp;}
  }
 } 
}

6、方格填数
题目:如下的10个格子
±-±-±-+
| | | |
±-±-±-±-+
| | | | |
±-±-±-±-+
| | | |
±-±-±-+
(如果显示有问题,也可以参看【图1.jpg】)
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

思路:全排列,注意不要漏掉

代码:

public class F {
 static long ans=0;
 public static void main(String[] args) {
  int a[]= {0,1,2,3,4,5,6,7,8,9};
  show(a,0);
  System.out.println(ans);
 }
 private static void show(int[] a, int n) {
  if(n==a.length-1) {
   if(f(a[0],a[1])&&f(a[1],a[2])&&f(a[3],a[4])&&f(a[4],a[5])
     &&f(a[5],a[6])&&f(a[7],a[8])&&f(a[8],a[9])
     &&f(a[3],a[7])&&f(a[0],a[4])&&f(a[4],a[8])
     &&f(a[1],a[5])&&f(a[5],a[9])&&f(a[2],a[6])
     &&f(a[0],a[5])&&f(a[1],a[4])&&f(a[1],a[6])
     &&f(a[2],a[5])&&f(a[3],a[8])&&f(a[4],a[7])
     &&f(a[4],a[9])&&f(a[5],a[8])&&f(a[6],a[9])
     &&f(a[0],a[3])) {
    ans++;
    return;
   }
  }
  for(int i=n;i<a.length;i++) {
   {int temp=a[i];a[i]=a[n];a[n]=temp;};
   show(a,n+1);
   {int temp=a[i];a[i]=a[n];a[n]=temp;};
  }
 }
 public static boolean f(int a,int b) {
  if(a-b==1||a-b==-1)return false;
  else return true;
 }
}

8、四平方和
题目:四平方和定理,又称为拉格朗日定理:
每个正整数都可以表示为至多4个正整数的平方和。
如果把0包括进去,就正好可以表示为4个数的平方和。
比如:
5 = 0^2 + 0^2 + 1^2 + 2^2
7 = 1^2 + 1^2 + 1^2 + 2^2
(^符号表示乘方的意思)
对于一个给定的正整数,可能存在多种平方和的表示法。
要求你对4个数排序:
0 <= a <= b <= c <= d
并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,最后输出第一个表示法
程序输入为一个正整数N (N<5000000)
要求输出4个非负整数,按从小到大排序,中间用空格分开
例如,输入:
5
则程序应该输出:
0 0 1 2
再例如,输入:
12
则程序应该输出:
0 2 2 2
再例如,输入:
773535
则程序应该输出:
1 1 267 838
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 3000ms

思路:暴力
代码:

import java.util.*;
public class H {
 public static void main(String[] args) {
  Scanner sc=new Scanner(System.in);
  double n=sc.nextDouble();
  for(int i=0;i<Math.sqrt(n);i++) {
   for(int j=i;j<Math.sqrt(n);j++) {
    for(int x=j;x<Math.sqrt(n);x++) {
     if(Math.sqrt(n-i*i-j*j-x*x)%1==0&&Math.sqrt(n-i*i-j*j-x*x)>=x) {
      System.out.println(i+" "+j+" "+x+" "+(int)Math.sqrt(n-i*i-j*j-x*x));
      return;
     }
    }
   }
  }
 }
}

蓝桥2016JavaA题解

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值