主要有三个和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;
}
}
}
}
}
}