首页 > 代码库 > 清华大学软件2016机试

清华大学软件2016机试

  机试完几天了,两个月的准备就是为了这三小时的三道题,趁着没忘记,把题目贡献出来,也算是继承学长的光荣传统,泽被后人吧!

  1.大数乘法

  先输入一个数字m,表示后面将输入m个数,接着输入m个0到9的数,以空格隔开(至少有一个不为0),这些数可构成一个十进制数a, a的三次方为数b, 求b的各个位的数字,输出时以空格隔开,不要输出多余的空格。

  输入示例:
  4 1 2 3 4

  输出示例:

  1 8 7 9 0 8 0 9 0 4

  思路:题目不难,用大数乘法做之

   2.最短时间

  给一个有向图,图的各个顶点的编号在int范围内,顶点之间边的权值表示通过两个顶点之间的时间,求某一点到达另一点的最小时间。如果不能到达,输出-1。

  思路:用map将顶点编号做个映射,其余用迪杰斯特拉算法即可

  3.寻找表达式

  先输入一个数字m,表示后面将输入m个数,接着输入m个数,接着你需要判断:在前m-1个数之间填入运算符号,使其运算后是否能得到最后一个数。如果可以,输出1,不可以,输出0.需要注意的是,有些整数运算虽然除不尽,但也可能出现结果。比如1/5+4/5 = 1

  输入示例:

  5 1 2 3 4 10

  输出示例:

  1

  思路:没想到太好的办法,只好一个一个判断。模拟分数进行加减法运算。希望读者能提供更好的思路。

  

清华大学软件2016机试