蓝桥杯JAVAB组2015初赛
A三角形面积
原版:三角形面积
如图1所示。图中的所有小方格面积都是1。
那么,图中的三角形面积应该是多少呢?
请填写三角形的面积。不要填写任何多余内容或说明性文字。
思路:正方形面积减去三个小三角形的面积
这个是改编版的,链接:2018JAVA组决赛A题
思路:设周长的一半为p,三角形面积s=sqrt(p*(p-a)*(p-b)*(p-c)
,abc用勾股定理求
答案:8.795
public class A三角形面积 {
public static void main(String[] args) {
double a = Math.sqrt(0.6f*0.6f+4.1f*4.1f);
double b = Math.sqrt(2.8f*2.8f+4.7f*4.7f);
double c = Math.sqrt(1.3f*1.3f+4.1f*4.1f);
double p = (a+b+c)/2;
double s = Math.sqrt(p*(p-a)*(p-b)*(p-c));
System.out.println(String.format("%.3f",s));
}
}
B立方变自身
思路:因为是填空题,所以写一个死循环,如果满足条件就输出,然后查输出了多少个就行了
答案:6
public class B立方变自身 {
public static void main(String[] args) {
int ans = 0;
for(long i=1;;i++) {
long t = i*i*i;
int sum = 0;
while(t!=0) {
sum+=t%10;
t/=10;
}
if(sum==i) {
System.out.println(i);
}
}
}
}
C三羊献瑞
答案:1085
思路:新进行0-9的全排列,然后如果是相同的汉字,就用相同的数字代替,不同的汉字用不同的数字,需要注意的是a[0],a[4]
不能为0
public class C三羊献瑞 {
public static int a[] = {0,1,2,3,4,5,6,7,8,9};
public static int ans = 0;
public static void qpl(int k) {
if(k>=a.length) {
String s1=""+a[0]+a[1]+a[2]+a[3];
String s2=""+a[4]+a[5]+a[6]+a[1];
String s3=""+a[4]+a[5]+a[2]+a[1]+a[7];
if(a[0]!=0&&a[4]!=0&&Integer.parseInt(s1)+Integer.parseInt(s2)==Integer.parseInt(s3)) {
System.out.println(s2);
}
}else {
for(int i=k;i<a.length;i++) {
int t=a[i];a[i]=a[k];a[k]=t;
qpl(k+1);
t=a[i];a[i]=a[k];a[k]=t;
}
}
}
public static void main(String[] args) {
qpl(0);
//System.out.println(1085);
}
}
G加法变乘法
答案:16
思路:加法变乘法,首先先减掉两个数,再加上这两个数的乘积就可以实现加法变乘法
public class G加法变乘法 {
public static void main(String[] args) {
int s = 0;
for(int i=1;i<=49;i++) {
s+=i;
}
for(int i=1;i<=49;i++) {
int t = s;
t=t-i-(i+1);
t+=i*(i+1);
int x = t;
for(int j=i+1;j<=49;j++) {
x=t;
x=x-j-(j+1);
x+=j*(j+1);
if(x==2015)System.out.println(i);
}
}
//System.out.println(16);
}
}
H牌型种数
答案:3598180
思路:DFS比较简单的一种,两个变量cha与k分别代表的距离选够13张还差几张牌,k则是1-13,代表牌的配型
public class H牌型种数 {
public static int ans = 0;
public static void dfs(int cha,int k) {
if(cha<0||k>14)return;
if(cha==0) {
ans++;
return;
}else {
for(int i=0;i<5;i++) {
dfs(cha-i,k+1);
}
}
}
public static void main(String[] args) {
dfs(13,1);
System.out.println(ans);
}
}
I饮料换购
思路:
import java.util.Scanner;
public class I饮料换购 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
int n = sc.nextInt();
int flag1=n/3;
int flag2=n%3;
int ans = n;//总共的
while(flag1+flag2>=3) {
int t = flag1;
flag1=(flag1+flag2)/3;
flag2=(t+flag2)%3;
ans+=flag1;
}
System.out.println(ans+n/3);
}
}
}