蓝桥2016javaC题解

1、有奖猜谜
题目:小明很喜欢猜谜语。
最近,他被邀请参加了X星球的猜谜活动。
每位选手开始的时候都被发给777个电子币。
规则是:猜对了,手里的电子币数目翻倍,
猜错了,扣除555个电子币, 扣完为止。
小明一共猜了15条谜语。
战果为:vxvxvxvxvxvxvvx
其中v表示猜对了,x表示猜错了。
请你计算一下,小明最后手里的电子币数目是多少。
请填写表示最后电子币数目的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

思路:题目意思

代码:

public class A {
 public static void main(String[] args) {
  int x=777;
  char s[]="vxvxvxvxvxvxvvx".toCharArray();
  for(int i=0;i<s.length;i++) {
   if(s[i]=='v')x*=2;
   else x-=555;
  }
  if(x<0)System.out.println(0);
  else System.out.println(x);
 }
}

3、平方怪圈
题目:如果把一个正整数的每一位都平方后再求和,得到一个新的正整数。
对新产生的正整数再做同样的处理。
如此一来,你会发现,不管开始取的是什么数字,
最终如果不是落入1,就是落入同一个循环圈。
请写出这个循环圈中最大的那个数字。
请填写该最大数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

代码:

import java.util.*;
public class C {
 static int max=145;
 public static void main(String[] args) {
  HashSet<Integer>s=new HashSet<>();
  for(int i=1;i<1000;i++) {
   max=i;
   HashSet<Integer>set=new HashSet<>();
   if(show(i,set)) {
    System.out.println(max);
    return;
   }
  }
 }
 private static boolean show(int n,HashSet set) {
  if(n==1)return false;
  else if(set.contains(n))return true;
  set.add(n);
  int s=0;
  while(n>0) {
   int a=n%10;
   n/=10;
   s+=a*a;
  }
  max=Math.max(max, s);
  return show(s,set);
 }
}

4、骰子游戏
题目:我们来玩一个游戏。
同时掷出3个普通骰子(6个面上的数字分别是1~6)。
如果其中一个骰子上的数字等于另外两个的和,你就赢了。
下面的程序计算出你能获胜的精确概率(以既约分数表示)

public class Main
{
 public static int gcd(int a, int b)
 {
  if(b==0) return a;
  return gcd(b,a%b);
 }
 
 public static void main(String[] args)
 { 
  int n = 0;
  for(int i=0; i<6; i++)
  for(int j=0; j<6; j++)
  for(int k=0; k<6; k++){
   if(________________________________) n++;   //填空位置
  }
  
  int m = gcd(n,6*6*6);
  System.out.println(n/m + "/" + 6*6*6/m);
 }
}

仔细阅读代码,填写划线部分缺少的内容。
注意:不要填写任何已有内容或说明性文字。

思路:找到对的方案直接++
答案:

i+j==k||i+k==j||j+k==i

8、冰雹数
题目:任意给定一个正整数N,
如果是偶数,执行: N / 2
如果是奇数,执行: N * 3 + 1
生成的新的数字再执行同样的动作,循环往复。
通过观察发现,这个数字会一会儿上升到很高,
一会儿又降落下来。
就这样起起落落的,但最终必会落到“1”
这有点像小冰雹粒子在冰雹云中翻滚增长的样子。
比如N=9
9,28,14,7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1
可以看到,N=9的时候,这个“小冰雹”最高冲到了52这个高度。
输入格式:
一个正整数N(N<1000000)
输出格式:
一个正整数,表示不大于N的数字,经过冰雹数变换过程中,最高冲到了多少。
例如,输入:
10
程序应该输出:
52
再例如,输入:
100
程序应该输出:
9232
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。

思路:直接暴力但是要注意数据类型
代码:

import java.util.*;
public class H {
 public static void main(String[] args) {
  show();
 }
 private static void show() {
  Scanner sc=new Scanner(System.in);
  long n=sc.nextLong();
  long max=n;
  for(int i=1;i<=n;i++) {
   long j=i;
   while(j!=1) {
    if(j%2==0)j/=2;
    else j=j*3+1;
    max=Math.max(j, max);
   }
  }
  System.out.println(max); 
 }
}

10、密码脱落
题目:X星球的考古学家发现了一批古代留下来的密码。
这些密码是由A、B、C、D 四种植物的种子串成的序列。
仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串)。
由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征。
你的任务是:
给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子。
输入一行,表示现在看到的密码串(长度不大于1000)
要求输出一个正整数,表示至少脱落了多少个种子。
例如,输入:
ABCBA
则程序应该输出:
0
再例如,输入:
ABDCDCBABC
则程序应该输出:
3
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 3000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。

思路:DP还不是太了解,明天接着看

剩下的题目看下下面的题解:
蓝桥2016JavaA
蓝桥Java2016B

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值