本帖最后由 foodszhu 于 2013-4-2 20:17 编辑
转自
http://programming2013.cstnet.cn/
大赛详情
"编程之美全国挑战赛"是微软亚太研发集团面向全国高校开展的大型编程比赛。2012年,微软亚太研发集团成功举办了以“大数据的可视化”为主题的挑战赛。2013年,我们邀请你“漫步云端体验编程之美”:
在这里,你可以自由交流编程心得,角逐算法技艺,领略编程之美在这里,你可以点击视频,浏览最新潮流技术;也可打开资料库,获取大量免费学习资源在这里,你将有机会来到微软,与资深研究员和工程师面对面交流,与各路精英华山论"键"云技术2013年,大赛分资格赛,初赛,复赛和决赛四部分。资格赛,初赛和复赛在网络比赛平台上举行,均为算法题。决赛在微软亚太研发集团总部举行,决赛将涉及微软公有云平台Windows Azure。参赛人选
编程之美全国挑战赛以个人形式参赛。参赛者必须为中国籍的高等院校学生,且报名以及比赛时未在微软公司实习。
奖项设置
| 一等奖1名 | 赴美国参观学习 |
| 二等奖2名 | 奖金5000元 |
| 三等奖3名 | 奖金3000元 |
| 全国15强 | 免试录取为微软亚太研发集团实习生 |
| 全国60强 | 获得一年免费的IEEE学生会员资格,到微软亚太研发集团总部参加决赛 |
| 初赛前1000名 即可进入复赛,并获得2013微软编程之美大赛精美纪念T恤一件 | |
| 复赛前20名2014年应届毕业生可赴微软亚太研发集团参加校园招聘直通车活动 | |
| 时间 | 环节 | 比赛内容 |
| 即日起至4月5日 | 报名 | 在线注册 |
| 4月6日至8日 | 资格赛 | 参赛者于72小时内答题,共3道算法题。答对任意一道即可获得进入初赛资格。 |
| 4月13日、14日 每天14:00-16:00 | 初赛 | 初赛两天分别进行一场,每场时长2个小时,共3道算法题。以最短时间内给出最多正确答案者胜出。每场决出约500人,共决出1000人进入复赛。参加初赛第一场的ID不可以参加初赛第二场。 |
| 4月20日 14:00-17:00 | 复赛 | 比赛时长3小时,共4道算法题,以最短时间内给出最多正确答案者胜出。此次比赛决出约60人参加决赛。 |
| 5月 | 决赛 | 前60强在微软亚太研发集团总部参加为期三天的全国总决赛,同微软“编程之美”团队华山论剑云技术。决赛将涉及微软最新的云平台Windows Azure。具体日期、比赛内容和形式将在5月上旬公布细则。 |
我们一起来做一些简单题吧,多做分析,多运用数学能让算法变简单很多。
顺便也能和大家一起学习,好的编程习惯,提升算法效率,简化代码等等。先来上问题:
Problem Description
多项式的描述如下:
1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ...
现在请你求出该多项式的前n项的和。
Input
输入数据由2行组成,首先是一个正整数m(m<100),表示测试实例的个数,第二行包含m个正整数,对于每一个整数(不妨设为n,n<1000),求该多项式的前n项的和。
Output
对于每个测试实例n,要求输出多项式前n项的和。每个测试实例的输出占一行,结果保留2位小数。
Sample Input
2
1 2
Sample Output
1.00
0.50
显然用迭代可以很方便的解决问题,初始sum=0, i从1开始到n,如果1是奇数,sum += 1.0 / i; 否则 sum -= 1.0 / i;
当然,迭代是可以换成递归的。这道题的递归的定义为:
┌ 0 (n = 0)
f(n)┼ f(n-1)+1/n (n为奇数)
└ f(n-1)-1/n (n为偶数)
当然,你也可以顺着递归,这就随你的喜好了,呵呵。
┌ 0 (i > n)
f(i)┼ f(n+1)+1/n (n为奇数)
└ f(n+1)-1/n (n为偶数)
这种简单题,初学者就可以用它来练练手,熟悉一下递归的写法(但对于这道题来说,递归的效率比迭代差):
这里示范第一种递推公式:
首先也定义一个函数F(n):double f(int n){}
根据公式写出条件判断:
[mw_shl_code=c,true]double f(int n)
{
if (n == 0)
return 0;
else if (n % 2 == 1)
return f(n - 1) + 1.0 / n;
else
return f(n - 1) - 1.0 / n;
}[/mw_shl_code]
最好可以简化代码,使代码更简洁紧凑:
[mw_shl_code=c,true]double f(int n)
{
return n ? f(n - 1) + ((n & 1) ? 1.0 : -1.0) / n : 0;
}[/mw_shl_code]
另一种递推公式也同样能用这样的方法写出代码。要不各位来试试?祝好运(*^__^*)
[查看全文]
该贴已经同步到 Whisper1166的微博
[mw_shl_code=cpp,true]struct Battler
{
int hp;
};
Battler Actor[2] =
{
{12},
{14},
};
void show(const Battler * obj[])
{
for(int i = 0; i < 1; i++)
{
std::cout << obj->hp << std::endl;
}
}
//调用
Show(&Actor);[/mw_shl_code]
然后出错了:
不能将‘void Show(const Battler**)’的实参‘1’从‘Battler (*)[8]’转换到‘const Battler**’
由于C++ Primer中没有讲如何传递结构数组,于是球解答。
编译器:GCC
[查看全文]
#include<stdio.h>
#define MAXN 50010;
#define MAXK 5;
#define MAXM 10;
int n,m,k;
struct Point
{
int p[MAXK];
};
void input(struct Point* s){
int i;
for(i= 0;i<k;++i){
scanf("%d",&(s->p));
}
}
void main(){
struct Point *point;
int i;
while(~scanf("%d%d",&n,&k)){
for(i=0;i<n;++i){
input(point);
}
}
}
有请大神出场
[查看全文]
下面代码是用C++编的啊,但小白我要用C实现啊,C的结构体内木有函数啊,我能在结构体内定义个指针指向结构体外的函数么??
using namespace std;const int MAXN = 50010;const int MAXK = 5;const int MAXM = 10;int n, m, k;struct Point{int p[MAXK];inline void input(){for(int i=0;i<k;++i){scanf("%d", &p *本站禁止HTML标签噢* );}}inline void output() const{for(int i=0;i<k;++i){if(i){printf(" ");}printf("%d", p *本站禁止HTML标签噢* );}printf("\n");}}point[MAXN], searchPoint;[查看全文]
Q:
定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍。当且仅当差是17的倍数时,原数也是17的倍数 。例如,34是17的倍数,因为3-20=-17是17的倍数;201不是17的倍数,因为20-5=15不是17的倍数。输入一个正整数n,你的任务是判断它是否是17的倍数。
Input:
输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(n可能很大),表示待判断的正整数。n=0表示输入结束,你的程序不应当处理这一行。
Output:
对于每组测试数据,输出一行,表示相应的n是否是17的倍数。1表示是,0表示否。
Sample Input:
34
201
2098765413
1717171717171717171717171717171717171717171717171718
0
Sample Output:10
1
0
最开始我用long long。发现超过一定的位数就不行。然后用char,按照定理循环去掉最后一位。检查到还剩6位的时候就转换为int型。
可还是有错。求大神指教,有code最好。我想看看到底哪儿错了。
[查看全文]
按照百度出来的结果进行编译,但是总是提示找不到文件 = =。。。
version:gcc-4.7.2-8.fc18.i686
OS: Fedora 18 LXDE
[查看全文]
本帖最后由 翡翠墨水 于 2013-3-20 18:37 编辑
void translateNumber(int * optionStats, char * phoneNumber)
{
}
收到的其中的一个
是使用Char 和 getstring 来 检查输入的字符串,是字母的立刻转换为数字
指针和get string 不熟悉,求解决方式……
比如输入
1-800-COL-LECT就能得到1-800-265-53282=ABC, 3=DEF, 4=GHI, 5=JKL, 6=MNO, 7=PQRS, 8=TUV, 9=WXYZ[查看全文]