“顶嵌杯”全国嵌入式系统C语言编程大赛初赛解题报告

http://acm.pku.edu.cn/JudgeOnline/showcontest?contest_id=1345 

A题:位操作

 import java.util.Scanner;

public class Main {

 public static String trans(String[] s) {

  Long l = Long.parseLong(s[0].trim(), 16);
  String b = Long.toBinaryString(l);
  // System.out.println(b);
  b = "00000000000000000000000000000000" + b;
  b = b.substring(b.length() - 32);
  // System.out.println(b);
  char[] ch = b.toCharArray();
  // System.out.println(Integer.parseInt(String.valueOf(s[1].trim())));
  ch[b.length() - 1 - Integer.parseInt(String.valueOf(s[1].trim()))] = '0';
  int i = Integer.parseInt(String.valueOf(s[2].trim()));
  // System.out.println(b.length());
  ch[b.length() - 1 - i] = '1';
  ch[b.length() - i] = '1';
  ch[b.length() + 1 - i] = '0';

  String str = new String(ch);
  // System.out.println(str);
  Long ll = Long.parseLong(str, 2);

  return Long.toHexString(ll);
 }

 public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);

  // while (sc.hasNextLine()) {
  String str = sc.nextLine();
  System.out.println(Main.trans(str.split(",")));
  // }
 }

}

B题:破译密码 简单的置换,对着密码表

 import java.util.Scanner;

public class Main {

 private static final String s1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 private static final String s2 = "VWXYZABCDEFGHIJKLMNOPQRSTU";

 public static void main(String[] args) {

  Scanner sc = new Scanner(System.in);
  while (sc.hasNextLine()) {
   String str = sc.nextLine();
   if (str.equals("ENDOFINPUT")) {
    break;
   } else if (!str.equals("START") && !str.equals("END")) {
    StringBuilder sb = new StringBuilder();
    int len = str.length();
    for (int i = 0; i < len; ++i) {
     char c = str.charAt(i);
     int index = s1.indexOf(c);
     if (index > -1) {
      char ch = s2.charAt(index);
      sb.append(ch);
     } else
      sb.append(c);
    }
    System.out.println(sb.toString());
   }
  }

 }
}
C题:小孩报数问题 c语言书课后习题(赫赫)

 

E题:字母旋转游戏(简单的模拟题)

注:成都大学ACM集训队训练题目

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值