NOIP2015普及组复赛试题讲解(c 版本)

合集下载

noip2015普及组复赛试题

noip2015普及组复赛试题

noip2015普及组复赛试题题目一:矩阵运算给定一个n阶方阵A(1 ≤ n ≤ 100),求A的所有指定行指定列删除后得到的新矩阵的行列式。

输入格式:输入第一行包含一个整数n,表示方阵的阶数。

接下来n行,每行包含n个整数,表示方阵A的元素。

接下来一行包含两个整数,表示要删除的行和列的序号。

输出格式:输出一个整数,表示新矩阵的行列式的值。

题目要求:首先,我们需要编写一个能够计算矩阵行列式的函数,然后根据题意进行修改,使其能够处理删除指定行列后的新矩阵,并返回新矩阵的行列式的值。

算法思路:我们可以使用拉普拉斯展开定理来计算矩阵行列式的值。

首先定义一个变量result,初始化为0。

然后遍历矩阵的第一行元素,对于第i 个元素,根据其正负性,计算其余元素组成的(n-1)阶子矩阵的行列式的值,并递归调用自身。

最后将每个元素计算得到的行列式值乘以其对应的元素,累加到result上。

然后根据题目要求,在计算每个元素对应的子矩阵时,判断是否需要删除指定的行列。

如果需要删除,则直接跳过该行列,否则继续计算。

代码如下:```pythondef determinant(matrix):n = len(matrix)if n == 1:return matrix[0][0]result = 0for i in range(n):if n > 2:sub_matrix = [row[:i] + row[i+1:] for row in matrix[1:]]else:sub_matrix = matrix[1:]det = determinant(sub_matrix)result += (-1) ** i * matrix[0][i] * detreturn resultn = int(input())matrix = []for _ in range(n):row = list(map(int, input().split()))matrix.append(row)row, col = map(int, input().split())matrix = [matrix[i][:col] + matrix[i][col+1:] for i in range(row)] # 删除指定列matrix = matrix[:row] + matrix[row+1:] # 删除指定行result = determinant(matrix)print(result)```题目二:水果分配小明和他的朋友们买了n个水果,其中有x个苹果和y个香蕉。

NOIP2015复赛普及组测试试题

NOIP2015复赛普及组测试试题

NOIP2015复赛普及组试题————————————————————————————————作者:————————————————————————————————日期:CCF 全国信息学奥林匹克联赛(NOIP2015)复赛普及组(请选手务必仔细阅读本页内容)一.题目概况金币扫雷游戏求和推销员中文题目名称coin mine sum salesman 英文题目与子目录名coin mine sum salesman 可执行文件名coin.in mine.in sum.in salesman.in 输入文件名coin.out mine.out sum.out s alesman.out 输出文件名每个测试1 秒 1 秒 1 秒 1 秒点时限第3 页共14 页【问题描述】 第 4 页共 14 页测试点数目 10 10 10 10每个测试点分值 10 10 10 10附加样例文件 有有 有 有结果比较方式全文比较(过滤行末空格及文末回车)题目类型 传统 传统 传统 传统 运行内存上限128M128M128M128M二.提交源程序文件名对于 C++语言coin.cpp mine.cpp sum.cpp salesman.cpp【问题描述】 第 5 页共 14 页对于 C 语言 coin.c mine.c sum.c salesman.c对于 pascal 语言coin.pas mine.pas sum.pas salesman.pas三.编译命令(不包含任何优化开关)对于 C++语言 g++ -o coin coin.cpp -lm g++ -o mine mine.cpp -lm g++ -o sum sum.cpp -lm g++ -o salesmansalesman.cpp-lm对于 C 语言gcc -o coin coin.c -lm gcc -omine mine.c -lm gcc -o sum sum.c -lm gcc -o salesmansalesman.c -lm 对于pascal 语言fpc coin.pas fpc mine.pas fpc sum.pas fpc salesman.pas【问题描述】注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。

NOIP普及组C题目及答案

NOIP普及组C题目及答案

第十届全国青少年信息学奥林匹克联赛初赛试题2005(普及组C 语言二小时完成)• •全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效•• 一.选择一个正确答案代码( A/B/C/D/E ),填入每题的括号内(每题1.5分,共30分)1. 在字符串"ababacbabcbdecced ”中出现次数最多的字母出现了()次。

A.6B.5C.4D.3E.2 2. 设全集 l={a,b,c,d,e,f,g,h} ()。

A.{c,e}B.{d,e}C.{e}D.{c,d,e}E.{d,f} 3. 和十进制数23的值相等的二进制数是()。

A.10110B.11011C.11011D.10111E.10011 4. 完全二叉树的结点个数为11,则它的叶结点个数为()。

A.4B.3C.5D.2E.6 5. 平面上有五个点A (5,3),B (3,5),C (2,1),D (3,3),E (5,1)。

以这五点作为完全图 G 的顶点,每两点之间的 直线距离是图G 中对应边的权值。

以下哪条边不是图 G 的最小生成树中的边()。

A.AD6.Intel 的首颗16位处理器是()。

A.80887. 处理器A 每秒处理的指令数是处理器 B 的2倍。

某一特定程序 P 分别编译为处理器 A 和处理器B 的指令,编 译结果处理器A 的指令数是处理器B 的 4倍。

已知程序P 在处理器A 上执行需要1个小时,那么在输入相同的 情况下,程序P 在处理器B 上执行需要()小时。

A.4B.2C.1D.1/2E.1/4 8.以下哪个不是计算机的输出设备()。

A.音箱 B.显示器 C.打印机 D.扫描仪 E.绘图仪 9. 下列活动中不属于信息学奥赛的系列活动的是()。

A.NOIPB.NOIC.IOID.冬令营E.程序员等级考试 10. 以下断电之后仍能保存数据的是()。

A.硬盘B.寄存器C.显存D.内存E.高速缓存 11. 以下哪个软件不是即时通信软件()。

noip复赛总结归纳(c++)

noip复赛总结归纳(c++)

noip复赛总结归纳(2010至2015年c++普及组复赛试题)一、【题目】1.数字统计(two.pas/c/cpp)【问题描述】请统计某个给定范围[L, R]的所有整数中,数字2 出现的次数。

比如给定范围[2, 22],数字2 在数2 中出现了1 次,在数12 中出现1 次,在数20 中出现1 次,在数21 中出现1 次,在数22 中出现2 次,所以数字2 在该范围内一共出现了6次。

【输入】输入文件名为two.in。

输入共1 行,为两个正整数L 和R,之间用一个空格隔开。

【输出】输出文件名为two.out。

输出共1 行,表示数字2 出现的次数。

【输入输出样例1】two.in two.out2 22 6【输入输出样例2】two.in two.out2 100 20【数据范围】1 ≤ L ≤ R≤ 10000。

【算法】把每一位分出来,一一判断【代码】#include<cstdio>using namespace std;int main(){int r,l,ans=0;scanf("%d%d",&r,&l);for(int i=r;i<=l;i++)//一一判断{int num=i;while(num>0)//把每一位分离{if(num%10==2)ans++;num/=10;}}printf("%d",ans);return 0;}【年份】2010二、【题目】2.接水问题(water.pas/c/cpp)【问题描述】学校里有一个水房,水房里一共装有m 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为1。

现在有n 名同学准备接水,他们的初始接水顺序已经确定。

将这些同学按接水顺序从1到n 编号,i 号同学的接水量为wi。

接水开始时,1 到m 号同学各占一个水龙头,并同时打开水龙头接水。

当其中某名同学j 完成其接水量要求wj 后,下一名排队等候接水的同学k马上接替j 同学的位置开始接水。

noip2015初赛普及组c题目及答案

noip2015初赛普及组c题目及答案

选手注意:第二十一届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题竞赛时间:2015 年10 月11 日14:30〜16:30•试题纸共有7 页,答题纸共有2 页,满分100 分。

请在答题纸上作答,写在试题纸上的一律无效。

•不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。

一、单项选择题(共20 题,每题1.5 分,共计30 分;每题有且仅有一个正确选项)1. 1MB 等于()。

A. 1000 字节B. 1024 字节C.1000 X 1000 字节D. 1024 X 1024 字节2. 在PC 机中,PENTIUM (奔腾)、酷睿、赛扬等是指()。

A.生产厂家名称B.硬盘的型号C. CPU 的型号D.显示器的型号3. 操作系统的作用是()。

A.把源程序译成目标程序B.便于进行数据管理C. 控制和管理系统资源D.实现硬件之间的连接4. 在计算机内部用来传送、存贮、加工处理的数据或指令都是以()形式进行的。

A. 二进制码B.八进制码C.十进制码D.智能拼音码5. 下列说法正确的是()。

A. CPU 的主要任务是执行数据运算和程序控制B. 存储器具有记忆能力,其中信息任何时候都不会丢失C. 两个显示器屏幕尺寸相同,则它们的分辨率必定相同D. 个人用户只能使用Wifi 的方式连接到Internet6. 二进制数00100100 和00010100 的和是()。

A. 00101000B.C. 01000100D. 001110007. 与二进制小数0.1 相等的十六进制数是()B. C. 0.2 D. 0.18. 所谓的“中断”是指()。

A. 操作系统随意停止一个程序的运行B. 当出现需要时,CPU 暂时停止当前程序的执行转而执行处理新情况的过程C. 因停机而停止一个程序的运行D. 电脑死机9. 计算机病毐是()。

A. 通过计算机传播的危害人体健康的一种病毒B. 人为制造的能够侵入计算机系统并给计算机带来故障的程序或指令集合C. 一种由于计算机元器件老化而产生的对生态环境有害的物质D. 利用计算机的海量高速运算能力而研制出来的用于疾病预防的新型病毒10. FTP 可以用于()。

NOIP2015复赛普及组试题

NOIP2015复赛普及组试题

CCF 全国信息学奥林匹克联赛(NOIP2015)复赛普及组(请选手务必仔细阅读本页内容)一.题目概况二.提交源程序文件名三.编译命令(不包含任何优化开关)注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。

2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。

3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) II x2 240 processor,,内存4G,上述时限以此配置为准。

4、只提供Linux 格式附加样例文件。

5、特别提醒:评测在当前最新公布的NOI Linux 下进行,各语言的编译器版本以其为准。

1. 金币c/pas)国王将金币作为工资,发放给忠诚的骑士。

第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N 天每天收到N 枚金币后,骑士会在之后的连续N+1 天里,每天收到N+1 枚金币。

请计算在前K 天里,骑士一共获得了多少金币。

【输入格式】输入文件名为。

输入文件只有1 行,包含一个正整数K,表示发放金币的天数。

【输出格式】输出文件名为。

输出文件只有1 行,包含一个正整数,即骑士收到的金币数。

【输入输出样例1】【输入输出样例1 说明】骑士第一天收到一枚金币;第二天和第三天,每天收到两枚金币;第四、五、六天,每天收到三枚金币。

因此一共收到1+2+2+3+3+3=14 枚金币。

【输入输出样例2】【数据说明】对于100%的数据,1 ≤ K ≤ 10,000。

2.扫雷游戏(c/pas)扫雷游戏是一款十分经典的单机小游戏。

在n 行m 列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。

玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。

noip2015初赛普及组c题目及答案

noip2015初赛普及组c题目及答案

选手注意:第二十一届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题竞赛时间:2015 年10 月11 日14:30〜16:30•试题纸共有7 页,答题纸共有2 页,满分100 分。

请在答题纸上作答,写在试题纸上的一律无效。

•不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。

一、单项选择题(共20 题,每题1.5 分,共计30 分;每题有且仅有一个正确选项)1. 1MB 等于()。

A. 1000 字节B. 1024 字节C.1000 X 1000 字节D. 1024 X 1024 字节2. 在PC 机中,PENTIUM (奔腾)、酷睿、赛扬等是指()。

A.生产厂家名称B.硬盘的型号C. CPU 的型号D.显示器的型号3. 操作系统的作用是()。

A.把源程序译成目标程序B.便于进行数据管理C. 控制和管理系统资源D.实现硬件之间的连接4. 在计算机内部用来传送、存贮、加工处理的数据或指令都是以()形式进行的。

A. 二进制码B.八进制码C.十进制码D.智能拼音码5. 下列说法正确的是()。

A. CPU 的主要任务是执行数据运算和程序控制B. 存储器具有记忆能力,其中信息任何时候都不会丢失C. 两个显示器屏幕尺寸相同,则它们的分辨率必定相同D. 个人用户只能使用Wifi 的方式连接到Internet6. 二进制数00100100 和00010100 的和是()。

A. 00101000B.C. 01000100D. 001110007. 与二进制小数0.1 相等的十六进制数是()B. C. 0.2 D. 0.18. 所谓的“中断”是指()。

A. 操作系统随意停止一个程序的运行B. 当出现需要时,CPU 暂时停止当前程序的执行转而执行处理新情况的过程C. 因停机而停止一个程序的运行D. 电脑死机9. 计算机病毐是()。

A. 通过计算机传播的危害人体健康的一种病毒B. 人为制造的能够侵入计算机系统并给计算机带来故障的程序或指令集合C. 一种由于计算机元器件老化而产生的对生态环境有害的物质D. 利用计算机的海量高速运算能力而研制出来的用于疾病预防的新型病毒10. FTP 可以用于()。

NOIP2015复赛普及组试题

NOIP2015复赛普及组试题

CCF 全国信息学奥林匹克联赛(NOIP2015)复赛普及组(请选手务必仔细阅读本页内容)一.题目概况二.提交源程序文件名三.编译命令(不包含任何优化开关)注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。

2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。

3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) II x2 240 processor,,内存4G,上述时限以此配置为准。

4、只提供Linux 格式附加样例文件。

5、特别提醒:评测在当前最新公布的NOI Linux 下进行,各语言的编译器版本以其为准。

1. 金币c/pas)国王将金币作为工资,发放给忠诚的骑士。

第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N 天每天收到N 枚金币后,骑士会在之后的连续N+1 天里,每天收到N+1 枚金币。

请计算在前K 天里,骑士一共获得了多少金币。

【输入格式】输入文件名为。

输入文件只有1 行,包含一个正整数K,表示发放金币的天数。

【输出格式】输出文件名为。

输出文件只有1 行,包含一个正整数,即骑士收到的金币数。

【输入输出样例1】【输入输出样例1 说明】骑士第一天收到一枚金币;第二天和第三天,每天收到两枚金币;第四、五、六天,每天收到三枚金币。

因此一共收到1+2+2+3+3+3=14 枚金币。

【输入输出样例2】【数据说明】对于100%的数据,1 ≤ K ≤ 10,000。

2.扫雷游戏(c/pas)扫雷游戏是一款十分经典的单机小游戏。

在n 行m 列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。

玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。

NOIP2015复赛普及组试题

NOIP2015复赛普及组试题

CCF 全国信息学奥林匹克联赛(NOIP2015)复赛普及组(请选手务必仔细阅读本页内容)一.题目概况1、文件名(程序名和输入输出文件名)必须使用英文小写。

2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。

3、全国统一评测时采用的机器配置为:CPU AMD Athlon(tm) II x2 240 processor,2.8GHz,内存4G,上述时限以此配置为准。

4、只提供Linux 格式附加样例文件。

5、特别提醒:评测在当前最新公布的NOI Linux 下进行,各语言的编译器版本以其为准。

1. 金币(coin.cpp/c/pas)国王将金币作为工资,发放给忠诚的骑士。

第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续N 天每天收到N 枚金币后,骑士会在之后的连续N+1 天里,每天收到N+1 枚金币。

请计算在前K 天里,骑士一共获得了多少金币。

【输入格式】输入文件名为coin.in。

输入文件只有1 行,包含一个正整数K,表示发放金币的天数。

【输出格式】输出文件名为coin.out。

输出文件只有1 行,包含一个正整数,即骑士收到的金币数。

【输入输出样例1】【输入输出样例1 说明】骑士第一天收到一枚金币;第二天和第三天,每天收到两枚金币;第四、五、六天,每天收到三枚金币。

因此一共收到1+2+2+3+3+3=14 枚金币。

【输入输出样例2】见选手目录下的coin/coin2.in 和coin/coin2.ans。

【数据说明】对于100%的数据,1 ≤ K ≤ 10,000。

2.扫雷游戏(mine.cpp/c/pas)扫雷游戏是一款十分经典的单机小游戏。

在n 行m 列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。

noip2015-初赛普及组C 试题及参考答案

noip2015-初赛普及组C  试题及参考答案

第二十一届全国青少年信息学奥林匹克联赛初赛普及组C++语言试题竞赛时间:2015 年10 月11 日14:30-16:30一、单项选择题(共20 题,每题1.5 分,共计30 分;每题有且仅有一个正确选项)1. 1MB 等于( )。

A.10000 字节B.1024 字节C.1000×1000 字节D.1024×1024 字节2.在 PC 机中,PENTIUM(奔腾)、酷睿、赛扬等是指( )。

A.生产厂家名称B.硬盘的型号C.CPU 的型号D.显示器的型号3.操作系统的作用是( )。

A.把源程序译成目标程序B.便于进行数据管理C.控制和管理系统资源D.实现硬件之间的连接4.在计算机内部用来传送、存贮、加工处理的数据或指令都是以( )形式进行的。

A.二进制码B.八进制码C.十进制码D.智能拼音码5.下列说法正确的是( )。

A.CPU 的主要任务是执行数据运算和程序控制B.存储器具有记忆能力,其中信息任何时候都不会丢失C.两个显示器屏幕尺寸相同,则它们的分辨率必定相同D.个人用户只能使用 Wifi 的方式连接到 Internet6.二进制数 00100100 和 00010100 的和是( )。

A.00101000B.01100111C.0100010D.001110007.与二进制小数 0.1 相等的十六进制数是( )。

A.0.8B.0.4C.0.2D.0.18.所谓的“中断”是指( )。

A.操作系统随意停止一个程序的运行B.当出现需要时,CPU 暂时停止当前程序的执行转而执行处理新情况的过程C.因停机而停止一个程序的运行D.电脑死机9.计算机病毒是( )。

A.通过计算机传播的危害人体健康的一种病毒B.人为制造的能够侵入计算机系统并给计算机带来故障的程序或指令集合C.一种由于计算机元器件老化而产生的对生态环境有害的物质D.利用计算机的海量高速运算能力而研制出来的用于疾病预防的新型病毒10.FTP 可以用于( )。

NOIP2015普及组复赛试题讲解(c版本)

NOIP2015普及组复赛试题讲解(c版本)
➢ 每组的数的下标用a1~an表示,数值用n1~nk表 示,用sum表示数值之和。答案就是 (n1+n2)*(a1+a2)+……+……。如果这样做就是 O(n^2/m)的算法。(估计能过60分)
➢ 转换公式(a1*n1+a2*n2+…+ak*nk)*(n-2)+
(a1+a2+…+ak)*(n1+n2+…nk) O(n)的时间复杂度

cin>>number[i];

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

cin>>color[i];

for(y=1;y<=n;y++)

{

int j=1;

while(y-
j>=1&&y+j<=n)

{

if(color[y-j]==color[y+j])

sum+=2*y*(number[y-
➢ int n,ans[maxn],lt,rt,now;
➢ bool cmp(data d1, data d2)
➢{

return d1.a<d2.a;
➢}
➢ int main()
➢{

scanf("%d",&n);

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

scanf("%d",&dt[i].s);
➢ int ans=0;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

暴力算法(预计分数40分,有点少)
根据条件1:x, y, z都是整数, x<y<z ,y−x=z−y 确定y为外层循环,y从1-n, 确定内层循环x>=1&&z<=n 根据条件2 colorx = colorz判断是否要计算 每次计算结束10007取模
-8-
参考程序(40分超时)
#include <iostream> using namespace std; int const maxn=100005; int main() { int i,y,n,m,number[maxn],color[m axn],sum=0; cin>>n>>m; for( i=1;i<=n;i++) cin>>number[i]; for( i=1;i<=n;i++) cin>>color[i]; for(y=1;y<=n;y++) { int j=1; while(yj>=1&&y+j<=n) { if(color[y-j]==color[y+j])
-3-
第2题 “扫雷游戏”简述
扫雷游戏是一款十分经典的单机小游戏。 在n行m列的雷区中有一些格子含有地雷(称之为地雷格), 其他格子不含地雷(称之为非地雷格)。 玩家翻开一个非地雷格时,该格将会出现一个数字——提 示周围格子中有多少个是地雷格。 游戏的目标是在不翻出任何地雷格的条件下,找出所有的 非地雷格。 现在给出n行m列的雷区中的地雷分布,要求计算出每个非 地雷格周围的地雷格数。 注:一个格子的周围格子包括其上、下、左、右、左上、 左下、右上、右下八个方向上与之直接相邻的格子。

sum+=2*y*(number[yj]+number[y+j]); sum%=10007;
t;<sum<<endl; return 0;
-9-
确定解题思路
观察题意可以得知,如果第i位和第j位同色,那么 就一定能够组成一个三元组,并且三元组的价值完 全与中间那个数无关。那么,我们就用一个数组存 储同奇偶性的同色方块,用n表示数值,i和j表示坐 标。那么价值就是(ni+nj)*(i+j) 每组的数的下标用a1~an表示,数值用n1~nk表 示,用sum表示数值之和。答案就是 (n1+n2)*(a1+a2)+……+……。如果这样做就是 O(n^2/m)的算法。(估计能过60分) 转换公式(a1*n1+a2*n2+…+ak*nk)*(n-2)+ (a1+a2+…+ak)*(n1+n2+…nk) O(n)的时间复杂度
试题分析
NOIP2015 普及组复赛题解
NOIP2015普及组C++
2017. 07. 28
第1题 “金币”简述
国王将金币作为工资,发放给忠诚的骑士。 第一天骑士收到一枚金币;之后两天(第二天和第 三天),每天收到两枚金币;之后三天(第四、五、 六天),每天收到三枚金币;之后四天,每天收到 四枚金币,以此类推;这种工资发放模式会一直延 续下去,当连续N天收到N枚金币后,骑士会在之 后的N+1天,每天收到N+1枚金币。 请计算前K天里,骑士一共获得了多少金币。 对于全部数据,1≤K≤10000。
} -6-
第3题 “求和”简述
一条狭长的纸带被均匀划分出了n个格子,格子编号从1到 n。每个格子上都染了一种颜色colori(用[1,m]当中的一 个整数表示),并且写了一个数字numberi。
定义一种特殊的三元组:(x, y, z),其中x,y,z都代表纸 带上格子的编号,这里的三元组要求满足以下两个条件: x, y, z都是整数, x<y<z ,y−x=z−y colorx = colorz 满足上述条件的三元组的分数规定为 (x+z)∗(numberx+numberz)。整个纸带的分数规定为所有 满足条件的三元组的分数的和。这个分数可能会很大,你 只要输出整个纸带的分数除以 10,007 所得的余数即可。 - 7 -
-4-
确定解题思路
模拟题,对每个格子进行标记。 如果是雷,标记为-1,并把对应八个格子中不是 雷的格子的数值递增1。 注意字符的读入 二维数组存放数据。
-5-
参考程序
#include <iostream> using namespace std; int main() { long d[102][102]; long n,m; cin>>n>>m; long i,j; char ch; for(i=0;i<=n;i++) { for(j=0;j<=m;j++) d[i][j]=0; }//数组初始化 for(i=1;i<=n;i++) { for(j=1;j<=m;j++) { cin>>ch;//输入数据 if (ch=='*') {
数值加1 } }
d[i][j]=-1;//用-1表示地雷 long l1,l2; for(l1=-1;l1<=1;l1++) for(l2=-1;l2<=1;l2++) { if(d[i+l1][j+l2]!=-1) d[i+l1][j+l2]++; }//边上八个位置的格子不是雷则
if(
} for(i=1;i<=n;i++) { for(j=1;j<=m;j++) d[i][j]==-1) cout<<'*'; else cout<<d[i][j]; cout<<endl; }//输出 return 0;
【分析】K的规模比较少,直接用模拟,一天一天发金币。 N天发N枚金币,N递增1,剩余天数K-N 预计时间15-25分钟
-2-
参考程序 C++
#include <iostream> using namespace std; int main() { long k,n=1,sum=0; cin>>k; while (n<=k) { sum+=n*n;//N个金币发N天 k=k-n;//剩余天数 n=n+1;//接下来发的金币数量和天数 } sum+=k*n;//剩余不足N天的按实际天数发放 cout<<sum; return 0; }
相关文档
最新文档