程序设计竞赛试题和题解
计算机程序设计大赛竞赛题

计算机程序设计大赛竞赛题□JS 竞赛题题目要求:用HTML + CSS + JavaScript制作一个前台页面(index.html)。
你可以使用纯JavaScript实现页面的动态效果,也可以使用JavaScript库,但最好是jQuery。
注:CSS、JavaScript要独立于html文件,单独保存为外部文件(如index.css、inde x.js)。
具体要求如下:1、设计一个有布局的界面,你可以使用tab或者tree形目录作为导航,但每级导航的内容不可存在于该文件(index.html)中,要放在另外的html文件里。
tree形目录作为导航的,要至少支持3级导航。
希望你能够把以下要求的实现作为某级导航的内容放在该级导航下。
该页面是你展示后续实现的门户,所以请尽量注意美观。
2、使用“题目要求”中提及的技术,实现一个4×4的拼图游戏。
在实现以下“基本要求”的前提下才可以实现后续的“扩展要求”。
“基本要求”务必全部实现,“扩展要求”请尽可能多地实现。
基本要求:1)格子内必须是图片而不是字符。
示例如图1。
图12)通过鼠标点击有图片的格子,将其移动到相邻的无图片的格子。
3)要有游戏功能控制按钮,如“开始”、“重来”等。
4)游戏成功完成后要有提示。
5)需要时请考虑JavaScript的执行效率。
6)游戏的CSS、JavaScript要独立于html文件,单独保存为外部文件。
扩展要求:1)必须考虑JavaScript的执行效率。
2)支持键盘方向键操作,即←↑↓→键的操作。
3)支持“计时”、“计步”玩法。
4)支持预定义好的几种矩阵(方阵)大小,甚至自定义的矩阵(方阵)大小,5×5、6×6等等。
5)支持不只1张拼图背景图片,甚至自定义的拼图背景图片。
6)支持智能拼图,即游戏初始时或游戏进行过程中,通过智能拼图功能完成余下步骤,当然,每一步的时间间隔要足以让肉眼辨别。
3、页面的美观度,布局的合理性,动态效果的流畅度也是评分的重点。
程序设计大赛试题及答案

试题1、数学黑洞(程序文件名maths.c/maths.cpp)【问题描述】任给一个4位正整数,其各位数位上的数字不全相同,将数字重新组合成一个最大的数与最小的数相减,重复这个过程,最多7步,必得6174。
对任给的4位正整数(各位数位上的数字不全相同),编程输出掉进黑洞的步数。
【输入】一行,一个4位正整数n(1000< n<9999)【输出】掉进黑洞的步数输入1234输出32、进制转换(程序文件名conver.c/conver.cpp)【问题描述】任给一个十进制整数n,及正整数m(m<=16且m≠10), 将n转换成m进制并输出。
【输入】一行,两个整数n,m(0 ≤ n ≤ 500000,2 ≤ m ≤ 16,且m≠10),中间用一个空格隔开,其中n 表示十进制数。
【输出】转换后的数【输入输出样例】输入255 8输出3773、分数线划定(程序文件名score.c/score.cpp)【问题描述】公务员选拔工作正在 A 市如火如荼的进行。
为了选拔优秀人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。
面试分数线根据计划录取人数的150%划定,即如果计划录取m名公务员,则面试分数线为排名第m*150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。
现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。
【输入】第一行,两个整数n,m(5 ≤ n ≤ 5000,3 ≤ m ≤ n),中间用一个空格隔开,其中n 表示报名参加笔试的选手总数,m 表示计划录取的人数。
输入数据保证m*150%向下取整后小于等于n。
第二行到第 n+1 行,每行包括两个整数,中间用一个空格隔开,分别是选手的报名号k(1000 ≤ k ≤ 9999)和该选手的笔试成绩s(1 ≤ s ≤ 100)。
数据保证选手的报名号各不相同。
大学程序设计大赛试题答案

大学程序设计大赛试题答案一、选择题1. 在C++中,下列哪个关键字用于定义常量?A. staticB. volatileC. constD. mutable答案:C2. 以下关于Python中的列表(list)说法正确的是:A. 列表是不可变的序列类型。
B. 列表不支持添加元素。
C. 列表可以包含不同类型的元素。
D. 列表的元素不能被删除。
答案:C3. 在Java中,关于异常处理的描述,以下哪项是正确的?A. try块中必须跟catch块。
B. catch块可以捕获所有类型的异常。
C. finally块可以用于执行清理操作,无论是否发生异常都会执行。
D. throw关键字用于声明一个可能抛出的异常类型。
答案:C4. 以下关于数据库事务的描述,哪项是错误的?A. 事务具有原子性。
B. 事务具有一致性。
C. 事务具有隔离性。
D. 事务不具备持久性。
答案:D5. 在HTML5中,用于创建交互式内容的标签是:A. <canvas>B. <svg>C. <iframe>D. <audio>答案:A二、填空题1. 在JavaScript中,可以使用________函数来获取字符串的长度。
答案:length2. 在Python中,使用________关键字可以遍历字典中的所有键。
答案:keys()3. SQL语句中,用于删除表中所有记录但保留表结构的命令是________。
答案:TRUNCATE TABLE4. 在C语言中,使用________关键字可以定义一个指针变量。
答案:*(星号)5. 正则表达式中,\d表示匹配一个________字符。
答案:数字三、编程题1. 题目描述:编写一个程序,输入一个整数n,输出n的阶乘。
C++代码示例:```cpp#include <iostream>using namespace std;int factorial(int n) {if (n <= 1) {return 1;} else {return n * factorial(n - 1);}}int main() {int n;cin >> n;cout << factorial(n) << endl;return 0;}```2. 题目描述:编写一个Python程序,实现一个简单的计算器,支持加、减、乘、除功能。
程序设计题库及答案详解

程序设计题库及答案详解程序设计题库及答案详解是面向计算机科学与技术专业学生以及编程爱好者的一份重要学习资料。
它不仅包含了大量的编程题目,还提供了详细的解题思路和答案,帮助读者深入理解程序设计的原理和技巧。
# 一、基础题目1. 题目1:编写一个程序,实现两个整数的加法。
- 答案详解:首先定义两个整数变量,然后使用加法运算符将它们相加,并将结果存储在一个新变量中。
最后,输出结果。
2. 题目2:编写一个程序,实现字符串的反转。
- 答案详解:可以使用循环结构遍历字符串的每个字符,并将它们添加到一个新的字符串的开始位置。
完成后,输出反转后的字符串。
# 二、数组与循环3. 题目3:编写一个程序,找出数组中的最大值。
- 答案详解:首先初始化一个变量来存储最大值,然后使用循环遍历数组中的每个元素,并与当前最大值进行比较,如果当前元素更大,则更新最大值。
循环结束后,输出最大值。
4. 题目4:编写一个程序,实现数组的排序。
- 答案详解:可以使用冒泡排序或选择排序等算法。
以冒泡排序为例,通过多次遍历数组,比较相邻元素的大小,并在必要时交换它们的位置,直到整个数组有序。
# 三、函数与递归5. 题目5:编写一个函数,计算两个数的乘积。
- 答案详解:定义一个函数,接受两个参数,然后在函数内部使用乘法运算符计算它们的乘积,并返回结果。
6. 题目6:编写一个递归函数,计算阶乘。
- 答案详解:定义一个递归函数,如果输入的数为0或1,则返回1;否则,返回输入数乘以递归调用该函数的结果,输入数减1。
# 四、数据结构7. 题目7:编写一个程序,实现链表的插入操作。
- 答案详解:首先定义链表节点的结构,然后编写一个函数来创建新的节点。
在插入操作中,根据插入位置的不同,调整节点的指针指向。
8. 题目8:编写一个程序,实现二叉树的遍历。
- 答案详解:可以使用前序、中序或后序遍历。
以中序遍历为例,首先遍历左子树,然后访问根节点,最后遍历右子树。
程序设计竞赛试题和题解

程序设计竞赛试题和题解付浩fuch@Contents完全平方数 (2)拉丁方阵 (3)取石子游戏 (5)乡村医院 (7)未知星球 (9)无聊的游戏 (10)最短路径 (12)完全平方数描述一个非负整数n是完全平方数当且仅当存在非负整数m,使得n=m2据说完全平方数具有某种神奇的力量,谁知道呢。
聪明的你一定想到了,这道题的任务就是编写一个程序,判断给定的n是否是完全平方数。
输入格式输入包含多组数据。
每组数据占一行,包含一个非负整数n,n不超过109输入以n=-1结束输出格式对每组输入数据输出一行,如果n是完全平方数则输出”Yes”,否则输出”No”输入样例1234-1输出样例YesYesNoNoYes解答一般的语言都有开平方运算吧?拉丁方阵描述拉丁方阵是一种n×n的方阵,方阵中恰有n种不同的元素,每种元素恰有n个,并且每种元素在一行和一列中恰好出现一次。
著名数学家和物理学家欧拉使用拉丁字母来作为拉丁方阵里元素的符号,拉丁方阵因此而得名。
例如下图是一个3×3的拉丁方阵:如果一个拉丁方阵的第一行和第一列按照元素的先后顺序来排列,那么这称为拉丁方阵的标准型,例如下图就是一个3x3的拉丁方阵标准型,第一行和第一列都是”1 2 3”。
你的任务是,编写一个程序读入一个方阵,判断其是否为拉丁方阵;进一步地,判断是否为标准型。
输入格式输入包含多组数据。
每组数据第一行为正整数n,表示方阵的大小。
其后n行,每行有n个1到n之间的整数,整数之间恰有一个空格,表示方阵的内容。
输入保证1≤n≤100输入以n=0结束,不要处理这个数据。
输出格式每组数据对应于一行输出。
如果输入是拉丁方阵,但不是标准型则输出1;如果输入是标准型则输出2;如果输入不是拉丁方阵则输出0输入样例21 12 233 2 12 1 31 3 231 2 33 2 12 1 254 35 2 15 4 1 3 21 52 4 32 13 5 43 24 15 31 2 32 3 13 1 2输出样例112解答按定义做判断。
c语言程序设计试题及答案解析

c语言程序设计试题及答案解析C语言程序设计试题及答案解析一、选择题1. 下列哪个选项不是C语言的基本数据类型?A. intB. floatC. stringD. double答案:C2. C语言中,以下哪个运算符用于计算两个数的乘积?A. +B. -C. *D. /答案:C二、填空题1. 在C语言中,用于定义一个整型变量的关键字是______。
答案:int2. 若有以下C语言代码段:```cint a = 5, b = 10;printf("%d", a + b);```执行后输出的结果是______。
答案:15三、简答题1. 简述C语言中数组的定义和初始化方式。
答案:在C语言中,数组是一种基本的数据结构,用于存储具有相同类型的多个元素。
数组的定义方式为:类型名数组名[数组大小];初始化方式可以是静态初始化,即在定义时直接赋值,如:int arr[5] = {1, 2, 3, 4, 5}; 或者动态初始化,即在定义后使用循环或赋值语句逐一赋值。
四、编程题1. 编写一个C语言程序,实现求一个整数的阶乘。
```c#include <stdio.h>int factorial(int n) {if (n == 0)return 1;elsereturn n * factorial(n - 1);}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);printf("%d 的阶乘是:%d\n", num, factorial(num));return 0;}```五、分析题1. 请分析以下C语言代码段的运行结果,并解释原因。
```c#include <stdio.h>int main() {int x = 10;printf("%d", x++);return 0;}```答案:代码段的运行结果是10。
全国青少年程序设计竞赛真题

全国青少年程序设计竞赛真题1. 设计一个程序,实现给定两个数的加减乘除运算。
程序需求:输入:两个浮点数 a 和 b;运算符 op(+、-、*、/)输出:根据运算符 op 进行相应的运算结果程序设计思路:首先,我们需要接收用户输入的两个浮点数 a 和 b,以及运算符 op。
然后,根据运算符进行相应的运算操作,并将结果输出。
程序设计:#include <stdio.h>int main(){float a, b;char op;printf("请输入第一个数:");scanf("%f", &a);printf("请输入第二个数:");scanf("%f", &b);printf("请输入运算符(+、-、*、/):");scanf(" %c", &op);switch(op){case '+':printf("两数相加的结果为: %.2f\n", a + b); break;case '-':printf("两数相减的结果为: %.2f\n", a - b); break;case '*':printf("两数相乘的结果为: %.2f\n", a * b); break;case '/':if(b != 0){printf("两数相除的结果为: %.2f\n", a / b); }else{printf("错误:除数不能为零!\n");}break;default:printf("错误:不支持的运算符!\n");break;}return 0;}2. 设计一个程序,找出一个整数数组中的最大值和最小值。
第六届程序设计比赛题目与答案

一、鸡兔同笼问题描绘一个笼子里面关了鸡和兔子〔鸡有2只脚,兔子有4只脚,没有例外〕。
已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物输入数据第1行是测试数据的组数n,后面跟着n行输入。
每组测试数据占1行,包括一个正整数a (a < 32768)。
输出要求n行,每行输出对应一个输入。
输出是两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用空格分开。
假如没有满足要求的情况出现,那么输出2个0。
输入样例2320输出样例0 05 10解题思路这个问题可以描绘成任给一个整数N,假如N是奇数,输出0 0,否那么假如N是4的倍数,输出N / 4 N / 2,假如N不是4的倍数,输出N/4+1 N/2。
这是一个一般的计算题,只要实现相应的判断和输出代码就可以了。
题目中说明了输入整数在一个比拟小的范围内,所以只需要考虑整数运算就可以了。
参考程序1.#include <stdio.h>2.void main( )3.{4.int nCases, i, nFeet; //nCases 表示输入测试数据的组数,nFeet表示输入的脚数。
5.scanf("%d", &nCases);6.for(i = 0; i < nCases; i++){7.scanf("%d", &nFeet);8.if(nFeet %2 != 0) // 假如有奇数只脚,那么输入不正确,9.// 因为不管2只还是4只,都是偶数10.printf("0 0\n");11.else if (nFeet%4 != 0) //假设要动物数目最少,使动物尽量有4只脚12.//假设要动物数目最多,使动物尽量有2只脚13.printf("%d %d\n", nFeet / 4 + 1, nFeet / 2);14.else printf("%d %d\n", nFeet / 4, nFeet / 2);15.}16.}二、判断闰年问题描绘判断某年是否是闰年。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计竞赛试题和题解付浩fuch@Contents完全平方数 (2)拉丁方阵 (3)取石子游戏 (5)乡村医院 (7)未知星球 (9)无聊的游戏 (10)最短路径 (12)完全平方数描述一个非负整数n是完全平方数当且仅当存在非负整数m,使得n=m2据说完全平方数具有某种神奇的力量,谁知道呢。
聪明的你一定想到了,这道题的任务就是编写一个程序,判断给定的n是否是完全平方数。
输入格式输入包含多组数据。
每组数据占一行,包含一个非负整数n,n不超过109输入以n=-1结束输出格式对每组输入数据输出一行,如果n是完全平方数则输出”Yes”,否则输出”No”输入样例1234-1输出样例YesYesNoNoYes解答一般的语言都有开平方运算吧?拉丁方阵描述拉丁方阵是一种n×n的方阵,方阵中恰有n种不同的元素,每种元素恰有n个,并且每种元素在一行和一列中恰好出现一次。
著名数学家和物理学家欧拉使用拉丁字母来作为拉丁方阵里元素的符号,拉丁方阵因此而得名。
例如下图是一个3×3的拉丁方阵:如果一个拉丁方阵的第一行和第一列按照元素的先后顺序来排列,那么这称为拉丁方阵的标准型,例如下图就是一个3x3的拉丁方阵标准型,第一行和第一列都是”1 2 3”。
你的任务是,编写一个程序读入一个方阵,判断其是否为拉丁方阵;进一步地,判断是否为标准型。
输入格式输入包含多组数据。
每组数据第一行为正整数n,表示方阵的大小。
其后n行,每行有n个1到n之间的整数,整数之间恰有一个空格,表示方阵的内容。
输入保证1≤n≤100输入以n=0结束,不要处理这个数据。
输出格式每组数据对应于一行输出。
如果输入是拉丁方阵,但不是标准型则输出1;如果输入是标准型则输出2;如果输入不是拉丁方阵则输出0输入样例21 12 233 2 12 1 31 3 231 2 33 2 12 1 254 35 2 15 4 1 3 21 52 4 32 13 5 43 24 15 31 2 32 3 13 1 2输出样例112解答按定义做判断。
取石子游戏描述在组合博弈论中,Nim游戏是一个非常经典的问题,Nim游戏可描述如下:有n堆石子,每堆石子数分别为a1, a2, …, a n (a i≥0)。
现有两人轮流从这n堆中取石子,每次必须从某一堆中取任意多的石子,至少要取一个,必须从同一堆中取石子,并且不能超过这一堆石子的总数。
如果某一方没有石子可取,那么他就输了。
例如有3堆石子,分别有3, 2, 2个,A和B两人轮流取。
A先从第2堆取1个,然后B从第1堆取3个,此时石子数分别为0, 1, 2A又从第3堆取1个,然后B从第1堆取1个,此时石子数分别为0, 0, 1A最后从第3堆取1个,此时所有石子都被取走,B无石子可取,所以B输了。
C. L. Bouton给出了Nim游戏的解法:考虑把每堆的石子数a1, a2, …, a n表示成二进制,那么当前游戏局面的Nim数为a1, a2, …, a n的按位异或。
比如在上面的例子中,3=11(2), 2=10(2), 2=10(2), 将这3个数按位异或得11(2)=3。
所以3是当前游戏局面的Nim数。
这里不加证明地给出结论:假设游戏双方都非常聪明,当Nim数为0时,当前游戏者必败;当Nim数不为0时,当前游戏者必胜。
再考虑上面的例子,A取走第2堆的1个石子后,石子数变为3, 1, 2,其Nim数为0,从而使得B 必败;此后A每次取石子后总能使得留给B的局面的Nim数为0,所以A最终取得了胜利。
既然你已经知道了如何判断当前Nim游戏局面是否必胜,那么请完成一个稍稍复杂些的任务:给定Nim游戏的当前局面,如果必胜,请找出当前游戏者需要取走多少石子才能让对方必败,如果有多种取石子的方式,请给出要取石子数最少的。
再如上面的例子,初始时,A从第1堆取3个石子,或从第2或3堆取1个石子都可以保证B必败,但因为后者所取的石子数最少,所以这种情况下答案为1。
输入格式输入包含多组数据。
每组数据第一行为n (1≤n≤106),表示石子的堆数。
第二行包含n个非负整数,表示每堆石子的数量,每堆石子不超过109个。
注意,可以有空的石子堆。
输入以n=0结束,不要处理这个数据。
对每组数据输出一行,为需要取走的最少的石子数,如果当前局面必败则输出-1输入样例110217 1733 2 241 2 3 4输出样例10-114解答记,如果那么输出-1;否则{|}为所求。
描述在一条笔直的公路上分布着n个村庄,为了节省开支,我们将挑选其中至多m个村庄修建医院。
各医院所在的村庄的村民可以在本村的医院接受服务,而其他村庄的村民则去最近的医院接受服务。
如果某村庄与多家医院的距离相同,可以任选一个医院。
为了减轻村民们的负担,我们希望让村民去医院所要行走的最远距离最小化。
为了方便描述,不妨设这条公路与X坐标轴重合,这样我们就可以用X坐标表示村庄的位置。
例如下图中有5个村庄,我们将挑选至多2个村庄修建医院,方格上端的数字表示坐标。
左图中村庄3和4中有医院,村庄1的村民需要行走2个单位距离才能到达最近的医院;右图村庄2和4中有医院,所有村民至多行走1个单位距离就能到达最近的医院。
事实上右图的方案就是最优的。
输入格式输入包含多组数据。
每组数据第一行为整数n和m,表示村庄的数量和医院数量的上限。
输入保证1≤m≤n≤20000第二行包含n个非负整数,表示每个村庄的坐标。
输入保证坐标严格递增,并且坐标的值不超过109输入以n=m=0结束,不要处理这组数据。
输出格式对每组输入数据输出一个整数,表示最小的最远距离。
输入样例5 20 1 2 5 63 31 2 44 12 3 4 50 0输出样例12解答首先二分查找最远距离R,然后贪心判断能否覆盖所有村庄。
描述fuch正在驾驶太空船探索一个未知的星球。
已知这个星球可以近似认为是个规则的球体,并且fuch的太空船正在赤道上空沿着规则的圆形轨道绕这个星球飞行。
通过一些采样测量,fuch获取到了这个星球赤道的高度信息。
采样数据共有n个,均匀覆盖了整个赤道,并且都是整数(因为太空船的计算机不支持浮点运算)。
fuch正打算降落,所以需要找一片平原。
fuch想从采样数据中找出最长的一段序列,使得这段序列对应的星球表面是平原。
如果一段序列的最大值和最小值之差不超过k,我们就可以认为是平原。
输入格式输入包含多组数据。
每组数据第一行包含两个整数n和k,含义如上所述。
(1≤n≤20000, 0≤k≤100)第二行包含n个非负整数,表示采样数据,不超过109输入以n=k=0结束,不要处理这组数据。
输出格式对每组输入数据输出最长的序列长度,使得其对应的星球表面是平原。
输入样例4 00 0 1 03 11 2 33 20 1 20 0输出样例323解答如果,那么使用简单的递推就能在内解决。
如果,从0到k枚举r,将序列所有数据加r再整除以k+1便可以转化为的情形。
描述ckf最近很无聊,所以他想出来一个无聊的游戏来打发时间。
ckf在纸上绘制了一副n×n的棋盘,左上角坐标为(1,1),右下角坐标为(n,n),开始时(1,1)位置有一颗棋子。
ckf有一个骰子,骰子有六个面,我们可以相信这个骰子是均匀的。
每一轮游戏中,ckf会掷两次骰子,设第一次的结果是a,第二次的结果是b,两次的结果都是1到6间的均匀分布,且相独立。
如果投掷骰子前棋子在(x,y)位置,那么ckf将把棋子移动到(x+a,y+b)。
ckf不断重复这一过程。
如果棋子被移出棋盘,即x>n或y>n,那么游戏结束。
ckf掷骰子的轮数就是他的得分。
ckf想知道,一场游戏中,他的得分的期望是多少?输入格式输入包含多组数据。
每组包含一个整数n,表示棋盘的大小 (1≤n≤400)输入以n=0结束,不要处理这组数据。
输出格式对每组输入数据输出得分的期望,四舍五入到小数点后2位。
输入样例1210100输出样例1.001.032.8427.58解答设为游戏过程中棋子会经过的概率,为棋子移动到时得分的期望。
则有:∑∑⁄∑∑由条件概率公式:∑ ( |)∑所以总分的期望为:∑∑∑∑∑所以只要计算出了和就能得出答案。
最短路径描述最短路径问题是图论中的经典问题。
在实际的应用中,最短路径问题还有各种各样的变型,这里需要你解决的就是其中一个:给定一个有向图G=(V,E),E中的每条边都有可正可负的权值,表示距离。
指定V中的两个顶u和w,请求出从u到w恰好含有k条边的最短路径。
注意,路径可以重复经过同一条边。
输入格式输入包含多组数据。
每组数据第一行包含三个整数, n, m, k,表示图中顶的数量,边的数量和最短路径的边数 (1≤n≤100, 0≤m≤n2, 1≤k≤109)第二行包含两个整数u和w,表示起点和终点的编号。
顶的编号在1到n之间。
其后m行,每行包含三个整数a, b, c,表示从编号为a的顶到编号为b的顶有一条权为c的边。
输入保证没有重边,c的绝对值不超过1000。
输入以n=m=k=0结束,不要处理这组数据。
输出格式对每组输入数据输出从u到w恰含k条边的最短路径长度,如果不存在这样的路径则输出”None”。
注意答案可能会超过32位整型的范围。
输入样例1 1 21 11 1 12 2 9999999991 21 2 10002 1 -1002 2 10000000001 11 2 10002 1 -1003 3 41 21 2 -12 3 13 1 13 3 51 21 2 -12 3 13 1 10 0 0输出样例2450000000100450000000000None解答考虑对含图的边权的邻接矩阵的乘法做修改:{ }设原图的邻接矩阵为A,那么A k中的第u行第w列即为答案。
不难看出这样定义的矩阵乘法仍满足结合律,所以可以利用快速幂的方法计算A k,时间复杂度。