欢迎使用CSDN-markdown编辑器

来源:互联网 发布:宝鸡国企再造新矩阵 编辑:程序博客网 时间:2024/06/08 06:33

PAT题目总结1008-1011

Problem1008:

一个电梯能上下,求从初始0层依次去满足每个Request,所需要花费的总时间。其中上每层6s,下每层4s,并且在每层停5s。 —— [ 题目地址]

解析:

单纯的按题意进行计算,没有任何难度。特殊情况大概是在同一层楼Request多次。

主要代码:

for(i=1;i<=n;i++)    {        scanf("%d",&now);        if(now>ago)            sum+=(now-ago)*6;        else            sum+=(ago-now)*4;        ago = now;    }

反思与注意点:

注意用两个变量记录本次和前一次的楼层,最后要进行更新。ago和now在搜索迭代时很常用。

Problem1009:

给你两个多项式各项的指数和系数(小数点后一位),求两个多项式相乘的结果。 —— [ 题目地址]

解析:

做法与高精度乘法类似,需要注意结果的最高次数是两个多项式最高次数之和。另外保留一位小数是个大坑!通常默认是四舍五入,但是在计算机域宽控制进行输出%n.mf 时,是四舍六入的。此时%.1f就有可能出错。

关键代码:

//多项式计算过程:for(i=0;i<=MAXN;i++)        for(j=0;j<=MAXN;j++)        ans[i+j]=ans[i+j]+eq1[i]*eq2[j];
//对于浮点数的非零判断:if(abs(ans[i])>=1e-6) //小于10的-6次方 认为是零
//对于浮点数的非零判断:if(abs(ans[i])>=1e-6) //小于10的-6次方 认为是零
    //判断小数点后第二位是不是5,进行四舍五入    sum = outc[i];    tmp = (sum*1000) / 10;    tmp = tmp % 10;    if(tmp == 5);    sum = sum +0.01;

反思与注意点:

  • 数组的大小一定要注意啊,开MAXN+1
  • 浮点数的非零判断。
  • 四舍五入。
  • 另外需要注意int和float在进行运算时,如果只想最后一步进行(int)转换,中间过程都用float进行,尤其是常量,如2->2.0。

Problem1010:

题目大意

>

0 0