编程之美2014挑战赛 复赛 Codehunt平台试题答案
首先介绍一下CodeHunt这个平台,题目是一些数据,或者说是测试用例,你的编程结果只要保证能让测试用例通过测试即可。
https://www.codehunt.com/ 没事的同学可以进去看看,可以用各种账号登录,只是不能访问到编程之美2014挑战赛的试题罢了。
P.S. 服务器托管在国外的Azure,可能会访问较慢
每次仅给出很少的测试用例,当且仅当你的程序让这些测试用例通过测试并有未通过测试的用例时才会给你错误提示。
通过测试的代码,平台会根据代码质量给出1,2,3等级的评分,我仅一道题为1,其他均为满分3分。
本次比赛分为Fire,Metal,Earth三个模块,每个模块难度不同。
Fire 01 为指导,并不是真题。
Fire 02,03非常简单,仅列出答案
using System;
public class Program {
public static int Puzzle(int[] a) {
return a[];
}
}
Fire 02
using System;
public class Program {
public static int Puzzle(int n) {
return n+(-n%)%;
}
}
Fire 03
- Fire 04
Fire 04 这道题我仅得了一分,这道题要把一个字符串中的数字提取出来生成一个新的字符串,以下是我的某3种方法。求高人指导更好的方法!!顺便求解错误方法错在哪?
s | ans |
p | |
0 | 0 |
<: | |
0 | 0 |
"0 " | 0 |
000p00 | 0 |
3 | 3 |
5 | 5 |
p0 | 0 |
using System;
using System.Linq;
public class Program {
public static string Puzzle(string s) {
return new string(c.Where(i => i >= '' && i <= '').ToArray());
}
}
Fire 04-1
using System;
using System.Text.RegularExpressions;
public class Program {
public static string Puzzle(string s) {
Regex regexpattern = new Regex(@"[0-9]*");
string ans="";
foreach (Match match in regexpattern.Matches(s))
{
ans+= match.Value;
}
return ans;
}
}
Fire 04-2
using System;
public class Program
{
public static string Puzzle(string s)
{
string ss = "";
for (int i = ; i < s.Length; i++)
{
if (s[i] >= '' && s[i] <= '')
{
ss += s[i];
}
}
return ss;
}
}
Fire 04-3
如果s==“p0”,下面的代码无法正常运行,求解释!
public static string Puzzle(string s)
{
return new string(s.TakeWhile(i => i >= '' && i <= '').ToArray());
}
Fire 04 错误方法
- Metal 01
s | ans |
\0\0\0\0 | \0\0\0\0 |
/\0\0/ | /\0\0/ |
/*\0\0 | /*\0\0 |
/\0/*/// | /\0/*/// |
/\u0a00/* | /\u0a00/* |
/**/* | * |
\0/**// | \0 / |
/\0/**// | /\0 / |
思路:乍一看确实不知道是什么,仔细看,发现把“/**/”都换成了空格,那么我准备考虑是不是删掉字符串中的注释内容。但实际上,这题仅是一个简单替换而已。
using System;
public class Program
{
public static string Puzzle(string s)
{
return s.Replace("/**/", " "); ;
}
}
Metal 01
- Metal 02
a | b | ans |
1 | 1 | 1 |
2 | 2 | 2 |
65 | 32 | 2080 |
23 | 14 | 322 |
思路:就是求最小公倍数
提示:用乘积除以最大公因数
如果最大公因数求解过程中使用辗转相除法的话得分是2分!
using System;
public class Program
{
public static int Puzzle(int a, int b)
{
int mul = a * b;
while (a != b)
{
if (a > b)
a = a - b;
if (b > a)
b = b - a;
}
return mul / a;
}
}
Metal 02
- Metal 03
a | ans |
{0,0} | null |
{0,0,0} | null |
{0,0,0,0} | null |
{0,0,0,0,0} | 0 |
{17,4,23,13,-9} | 4 |
{18,18,18,18,18} | 0 |
{50,18,18,18,18} | 32 |
思路:注意到a的长度达到5后就有结果了,否则会提示应该throw IndexOutOfRangeException。
对于长度大于等于5数组,结果是该数组间两个数差值的最小值。
最开始用 a=a.OrderBy(item=>item)排序,但平台提示出错。(已经引用System.Linq)
using System;
using System.Linq;
public class Program
{
public static int Puzzle(int[] a)
{
if (a.Length <= )
throw new IndexOutOfRangeException();
int min = int.MaxValue;
for (int i = ; i < a.Length; i++)
{
for (int j = i + ; j < a.Length; j++)
{
int b = Math.Abs(a[i] - a[j]);
min = Math.Min(min, b);
}
}
return min;
}
}
Metal 03
- Earth 01
a | b | c | ans |
0 | 0 | 1 | 0 |
916 | 914 | 49 | 10 |
3 | 4 | 5 | 2 |
7 | 13 | 4 | 3 |
3 | 522 | 411 | 333 |
3 | 4 | 1 | 0 |
3 | 0 | 1 | 0 |
916 | 914 | 1 | 0 |
916 | 0 | 1 | 0 |
1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 |
思路:注意到(3,522,411)这一组,很容易发现 ans=a*(b-c),但是(916,914,49)这组好像不对,取个余数,就得到 ans=(a*(b-c))%c,如果b<c就出现负数,而C#中取余的符号和前者相同,这时要进行相应处理。
using System;
public class Program
{
public static int Puzzle(int a, int b, int c)
{
return (((a * (b - c))) % c + c) % c;
}
}
Earth 01
- Earth 02
n | ans |
0 | 0 |
1 | 1 |
12 | 2 |
13 | 3 |
20 | 2 |
34 | 2 |
512 | 1 |
256 | 1 |
128 | 1 |
64 | 1 |
32 | 1 |
16 | 1 |
8 | 1 |
4 | 1 |
2 |
1 |
思路:发现所有2的指数幂都是1,而12=8+4,2个数相加;13=8+4+1,3个数相加。
则认为是n的二进制表示中1的个数。
using System;
public class Program
{
public static int Puzzle(int n)
{
int ans = ;
while (n > )
{
if (n % == )
{
ans++;
}
n /= ;
}
return ans;
}
}
Earth 02
- Earth 03
v1 v2 ans {} {} 0 {0} {0} 0 {0} {7} 49 {8} {9} 1 {8,0} {9,0} 1 {0,0} {0,0} 0 {8,8} {9,9} 2
思路,如果定义距离为对应元素的平方和的话,ans就是v1和v2的距离。
using System; public class Program
{
public static int Puzzle(int[] v1, int[] v2)
{
int sum = ;
for (int i = ; i < v1.Length; i++)
{
sum += Math.Abs(v1[i] - v2[i]) * Math.Abs(v1[i] - v2[i]);
}
return sum;
}
}
Earth 03
编程之美2014挑战赛 复赛 Codehunt平台试题答案的更多相关文章
- 2017“编程之美”终章:AI之战勇者为王
编者按:8月15日,第六届微软“编程之美”挑战赛在选手的火热比拼中圆满落下帷幕.“编程之美”挑战赛是由微软主办,面向高校学生开展的大型编程比赛.自2012年起,微软每年都在革新比赛命题.紧跟时代潮流, ...
- LeetCode:Climbing Stairs(编程之美2.9-斐波那契数列)
题目链接 You are climbing a stair case. It takes n steps to reach to the top. Each time you can either c ...
- 编程之美2.5:寻找最大的K个数
编程之美2.5:寻找最大的K个数 引申:寻找第k大的数: 方法一: // 选择第k大的数(通过改进快速排序来实现) public static void SelectShort(int[] array ...
- 24点C++程序实现 编程之美1.16
解法1,对于任意输入的四个数字,给出一个24点的解法,若无解,则没有输出. 原理参照下图(编程之美原书) 代码如下,仅供参考 // 1.16.cpp : Defines the entry point ...
- Python编程之美:最佳实践指南PDF高清完整版免费下载|百度云盘|Python新手到进阶
百度云盘:Python编程之美:最佳实践指南PDF高清完整版免费下载 提取码:1py6 内容简介 <Python编程之美:最佳实践指南>是Python用户的一本百科式学习指南,由Pytho ...
- hihocoder #1170 机器人 && 编程之美2015复赛
题意: 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描写叙述 小冰的N个机器人兄弟排成一列,每一个机器人有一个颜色. 如今小冰想让同一颜色的机器人聚在一起.即随意两个同颜色的 ...
- 生成CPU使用率 sin 曲线 控制cpu使用率 编程之美
入职Oracle 以后想着把之前写过的<编程之美>中控制CPU使用率曲线的程序再写一边, 可是总是由于入职须要学习的东西太多, 没有时间. 程序早就写好了. 最终有机会贴出来了.o(∩∩) ...
- 编程之美Q1
题目 和数书页有点类似,就直接数吧 #include<iostream> using namespace std; class q1 { public: size_t func(size_ ...
- 编程之美:1.9高效率安排见面会 图的m着色问题 回溯法
原书问题,可以转换为图的m着色问题 ,下面该问题的代码 这里有参考ppt与code,免积分载 http://download.csdn.net/detail/u011467621/6341195 // ...
随机推荐
- 初识selenium
今天尝试了一些selenium,感觉并没有想象中那么难.整理一篇笔记出来. 笔者使用的是Python+selenium.以下内容均是基于Windows系统和Python3.5.2. 首先是下载sele ...
- Linux:去除认证,加速 SSH登录
编辑配置文件 /etc/ssh/sshd_config vim /etc/ssh/sshd_config 找到 UseDNS选项,如果没有注释,将其注释 #UseDNS yes 添加 UseDNS n ...
- js图片变换
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 解决OneNote的无法同步的问题
微软的OneNote一直是我比较喜欢的笔记软件,一些复杂的笔记用它来存储比Evernote要强大很多,然而这几天发现一直无法同步,登陆https://onedrive.live.com/看了一下,发现 ...
- 关于DCOM的安全性
关于DCOM的安全性 DCOM的安全性设置在注册表中. 2. 通过DCOMCNF.exe可以配置
- {VS2010C#}{WinForm}{ActiveX}VS2010C#开发基于WinForm的ActiveX控件
在VS2010中使用C#开发基于WinForm的ActiveX控件 常见的一些ActiveX大部分是使用VB.Delphi.C++开发,使用C#开发ActiveX要解决下面三个问题: 使.NET组件可 ...
- position:absolute和float会隐式的改变display类型
position:absolute和float会隐式的改变display类型,不论之前是什么类型的元素(display:none除外),只要设置了position:absolute或float,都会让 ...
- Mahout源码分析之 -- 文档向量化TF-IDF
fesh个人实践,欢迎经验交流!Blog地址:http://www.cnblogs.com/fesh/p/3775429.html Mahout之SparseVectorsFromSequenceFi ...
- python第十三天
这几天在欺负docker兽,很是开心,但是没想到领导突然让我去殴打openstack兽,完全没有兴趣嘛,毕竟前一阵一直在吊打它,当然啦,对于愚蠢的人类而言openstack兽是十分强大的,不过对于北方 ...
- 改进的SQL Express LocalDBB
介绍一种改进的SQL Express LocalDB LocalDB专门为开发商.它是非常容易安装,无需管理,但它提供了相同的T-SQL语言,编程表面和客户端供应商定期的SQL Server Expr ...