1.  奖券数目

有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。

虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其中不要出现带“4”的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张。

请提交该数字(一个整数),不要写任何多余的内容或说明性文字。52488

2.  星系炸弹

在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。

每个炸弹都可以设定多少天之后爆炸。

比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。

有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。

请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19

请严格按照格式书写。不能出现其它文字或符号。2017-8-5

3.  三羊献瑞

观察下面的加法算式:

祥 瑞 生 辉

+ 三 羊 献 瑞

-------------------

三 羊 生 瑞 气

(如果有对齐问题,可以参看【图1.jpg】)

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。

请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。

 1085

4.  格子中输出

StringInGrid函数会在一个指定大小的格子中打印指定的字符串。

要求字符串在水平、垂直两个方向上都居中。

如果字符串太长,就截断。

如果不能恰好居中,可以稍稍偏左或者偏上一点。

下面的程序实现这个逻辑,请填写划线部分缺少的代码。

#include <stdio.h>

#include <string.h>

void StringInGrid(int width, int height, const char* s)

{

int i,k;

char buf[1000];

strcpy(buf, s);

if(strlen(s)>width-2) buf[width-2]=0;

printf("+");

for(i=0;i<width-2;i++) printf("-");

printf("+\n");

for(k=1; k<(height-1)/2;k++){

printf("|");

for(i=0;i<width-2;i++) printf(" ");

printf("|\n");

}

printf("|");

printf("%*s%s%*s",_____________________________________________); //填空

printf("|\n");

for(k=(height-1)/2+1; k<height-1; k++){

printf("|");

for(i=0;i<width-2;i++) printf(" ");

printf("|\n");

}

printf("+");

for(i=0;i<width-2;i++) printf("-");

printf("+\n");

}

int main()

{

StringInGrid(20,6,"abcd1234");

return 0;

}

对于题目中数据,应该输出:

+------------------+

| |

| abcd1234 |

| |

| |

+------------------+

(如果出现对齐问题,参看【图1.jpg】)

注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。

 5,"",buf,5," "

5. 九数组分数

1,2,3...9 这九个数字组成一个分数,其值恰好为1/3,如何组法?

下面的程序实现了该功能,请填写划线部分缺失的代码。

#include <stdio.h>

void test(int x[])

{

int a = x[0]*1000 + x[1]*100 + x[2]*10 + x[3];

int b = x[4]*10000 + x[5]*1000 + x[6]*100 + x[7]*10 + x[8];

if(a*3==b) printf("%d / %d\n", a, b);

}

void f(int x[], int k)

{

int i,t;

if(k>=9){

test(x);

return;

}

for(i=k; i<9; i++){

{t=x[k]; x[k]=x[i]; x[i]=t;}

f(x,k+1);

_____________________________________________ // 填空处

}

}

int main()

{

int x[] = {1,2,3,4,5,6,7,8,9};

f(x,0);

return 0;

}

t=x[k]; x[k]=x[i]; x[i]=t;

6.  加法变乘法

我们都知道:1+2+3+ ... + 49 = 1225

现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015

比如:

1+2+3+...+10*11+12+...+27*28+29+...+49 = 2015

就是符合要求的答案。

请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。

注意:需要你提交的是一个整数,不要填写任何多余的内容。16

7.  牌型种数

小明被劫持到X赌城,被迫与其他3人玩牌。

一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。

这时,小明脑子里突然冒出一个问题:

如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?

请填写该整数,不要填写任何多余的内容或说明文字。3598180

8.  移动距离

X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3...

当排满一行时,从下一行相邻的楼往反方向排号。

比如:当小区排号宽度为6时,开始情形如下:

1 2 3 4 5 6

12 11 10 9 8 7

13 14 15 .....

我们的问题是:已知了两个楼号m和n,需要求出它们之间的最短移动距离(不能斜线方向移动)

输入为3个整数w m n,空格分开,都在1到10000范围内

w为排号宽度,m,n为待计算的楼号。

要求输出一个整数,表示m n 两楼间最短移动距离。

例如:

用户输入:

6 8 2

则,程序应该输出:

4

再例如:

用户输入:

4 7 20

则,程序应该输出:

5

资源约定:

峰值内存消耗 < 256M

CPU消耗 < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0

注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。

注意: 所有依赖的函数必须明确地在源文件中 #include<xxx>, 不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

#include <cstdio>

#include <cstdlib>

using namespace std;

int main(){

int w,m,n;

scanf("%d%d%d",&w,&m,&n);

int mx,nx,ny,my;

if(m%w==0){

mx=m/w-1;

my=w;

}else{

mx=m/w;

my=mx%2==0?m%w:((w-m%w)+1);

}

if(n%w==0){

nx=n/w-1;

ny=w;

}else{

nx=n/w;

ny=nx%2==0?n%w:((w-n%w)+1);

}

//printf("%d %d %d %d \n",mx,my,nx,ny);

printf("%d",abs(mx-nx)+abs(my-ny));

return 0;

}

9.垒骰子

赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体。

经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥!

我们先来规范一下骰子:1 的对面是 4,2 的对面是 5,3 的对面是 6。

假设有 m 组互斥现象,每组中的那两个数字的面紧贴在一起,骰子就不能稳定的垒起来。

atm想计算一下有多少种不同的可能的垒骰子方式。

两种垒骰子方式相同,当且仅当这两种方式中对应高度的骰子的对应数字的朝向都相同。

由于方案数可能过多,请输出模 10^9 + 7 的结果。

不要小看了 atm 的骰子数量哦~

「输入格式」

第一行两个整数 n m

n表示骰子数目

接下来 m 行,每行两个整数 a b ,表示 a 和 b 数字不能紧贴在一起。

「输出格式」

一行一个数,表示答案模 10^9 + 7 的结果。

「样例输入」

2 1

1 2

「样例输出」

544

「数据范围」

对于 30% 的数据:n <= 5

对于 60% 的数据:n <= 100

对于 100% 的数据:0 < n <=10^9, m <= 36

资源约定:

峰值内存消耗 < 256M

CPU消耗 < 2000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0

注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。

注意: 所有依赖的函数必须明确地在源文件中 #include<xxx>, 不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

(矩阵递推+二分幂)

#include<iostream>

#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <vector>

#include<algorithm>

#include <cmath>

using namespace std;

typedef long long LL;

const intMod=1000000007;

struct Matrix

{

LL a[6][6];

Matrix(int x)

{

memset(a,0,sizeof(a));

for(int i=0;i<6;i++) a[i][i]=x;

}

Matrix operator*(const Matrix&b)const

{

Matrix c(0);

for(int i=0;i<6;i++)

for(int j=0;j<6;j++)

for(int k=0;k<6;k++)

{

c.a[i][j]+=(a[i][k]*b.a[k][j])%Mod;

c.a[i][j]%=Mod;

}

return c;

}

};

Matrix fast_mod(Matrix x,intr)

{

Matrix ret(1);

while(r)

{

if(r&1) ret=ret*x;

x=x*x;

r>>=1;

}

return ret;

}

int main()

{

Matrix st(0);

for(int i=0;i<6;i++)

for(int j=0;j<6;j++)

st.a[i][j]=4;

int n,m;

cin>>n>>m;

for(int i=0;i<m;i++)

{

int u,v;

cin>>u>>v;

st.a[u-1][v-1]=0;st.a[v-1][u-1]=0;

}

Matrix ret=fast_mod(st,n-1);

LL ans=0;

for(int i=0;i<6;i++)

for(int j=0;j<6;j++)

{

ans+=(4*ret.a[i][j])%Mod;

ans%=Mod;

}

cout<<ans<<endl;

return 0;

}

10.生命之树

在X森林里,上帝创建了生命之树。

他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值。

上帝要在这棵树内选出一个非空节点集S,使得对于S中的任意两个点a,b,都存在一个点列 {a, v1, v2, ..., vk, b} 使得这个点列中的每个点都是S里面的元素,且序列中相邻两个点间有一条边相连。

在这个前提下,上帝要使得S中的点所对应的整数的和尽量大。

这个最大的和就是上帝给生命之树的评分。

经过atm的努力,他已经知道了上帝给每棵树上每个节点上的整数。但是由于 atm 不擅长计算,他不知道怎样有效的求评分。他需要你为他写一个程序来计算一棵树的分数。

「输入格式」

第一行一个整数 n 表示这棵树有 n 个节点。

第二行 n 个整数,依次表示每个节点的评分。

接下来 n-1 行,每行 2 个整数 u, v,表示存在一条 u 到 v 的边。由于这是一棵树,所以是不存在环的。

「输出格式」

输出一行一个数,表示上帝给这棵树的分数。

「样例输入」

5

1 -2 -3 4 5

4 2

3 1

1 2

2 5

「样例输出」

8

「数据范围」

对于 30% 的数据,n <= 10

对于 100% 的数据,0 < n <=10^5, 每个节点的评分的绝对值不超过 10^6 。

资源约定:

峰值内存消耗 < 256M

CPU消耗 < 3000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意: main函数需要返回0

注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。

注意: 所有依赖的函数必须明确地在源文件中 #include<xxx>, 不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

(邻接表做法)

#include <iostream>

#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <vector>

#include <algorithm>

#include <cmath>

using namespace std;

const int N=100005;

int w[N];

int dp[N][2];

int vis[N];

vector<int> vt[N];

int ans;

void dfs(int now)

{

int sz=vt[now].size();

dp[now][1]=w[now];

vis[now]=1;

for(int i=0;i<sz;i++)

{

int v=vt[now][i];

if(!vis[v])

{

dfs(v);

if(dp[v][1]>0) dp[now][1]+=dp[v][1];

}

}

ans=max(ans,dp[now][1]);

return ;

}

int main()

{

int n;

cin>>n;

for(int i=1;i<=n;i++)

cin>>w[i];

for(int i=0;i<n-1;i++)

{

int u,v;

cin>>u>>v;

vt[u].push_back(v);

vt[v].push_back(u);

}

ans=-(1<<31);

memset(dp,0,sizeof(dp));

memset(vis,0,sizeof(vis));

dfs(1);

cout<<ans<<endl;

return 0;



1. 结果填空 (满分3分)

2. 结果填空 (满分5分)

3. 结果填空 (满分9分)

4. 代码填空 (满分11分)

5. 代码填空 (满分13分)

6. 结果填空 (满分17分)

7. 结果填空 (满分21分)

8. 程序设计(满分15分)

9. 程序设计(满分25分)

10. 程序设计(满分31分)

最新文章

  1. 将SHP导入MySQL中
  2. 学习php一个星期
  3. 面试问题5:const 与 define 宏定义之间的区别
  4. NGUI Atlas Maker sprites with black line issue
  5. [Linux] - Docker pure-ftp使用
  6. git客户端初始化
  7. POJ 1062 昂贵的聘礼(Dijkstra)
  8. android 电话拨号器
  9. HTML页面规范
  10. LNMP一键安装包 V1.1 通告
  11. Hive中抽取连续多天登录用户
  12. Nginx redirect
  13. ceph 常见问题百科全书---luminous安装部署篇
  14. Linux rpm包安装不了
  15. nginx接入let&#39;s encrypt
  16. sql 表,字段(列),表数据(行)相关命令
  17. 详解JNDI的lookup资源引用java:/comp/env
  18. python selenium 安装与 chromedriver安装
  19. vs2003一查找就卡死了
  20. 使用filter解决request.getParameter的中文乱码问题

热门文章

  1. Android软键盘遮挡的四种解决方案
  2. android电视安装爱奇艺等不能看视频问题
  3. Eclipse给方法分配足够的内存
  4. PHP导出数据到CSV文件
  5. .NET中值得体验的精妙设计
  6. Chrome插件开发入门(二)——消息传递机制
  7. Ubuntu 16.04 LTS (Xenial Xerus)
  8. OAF_VO系列4 - Row Imp的分析(概念)
  9. NeHe OpenGL教程 第十七课:2D图像文字
  10. uboot 的内存命令使用 mw (修改) md (显示)