ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

暑假算法练习Day5

2021-07-24 11:00:24  阅读:165  来源: 互联网

标签:Case 输出 int 多项式 Day5 算法 暑假 include 输入


咕咕了好几天哈哈哈哈,因为这几天在忙一些其他事(bushi ,好吧其实就是自己太懒啦,从今天开始继续每天的算法练习

1010 一元多项式求导 (25 分)

设计函数求一元多项式的导数。(注:\(x^n\)(\(n\)为整数)的一阶导数为\(nx^{n−1}\)。)

输入格式:

以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。

输出格式:

以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0

输入样例:

3 4 -5 2 6 1 -2 0

输出样例:

12 3 -10 1 6 0

解题分析及代码:

这一题看起来很简单,但是其实还是存在着几个坑的,害得我整整调了快1个小时。我们需要注意四点:

  1. 对于“零多项式”,我们最终结果因输出为 0 0。其实不止零多项式,对于如1 0等输入,我们最终结果都需要输出0 0,因此在输出时应对输入多项式的第一项的系数进行判断,若为0,则直接输出0 0
  2. 对于输出格式的判断,这个我搞了很久,因为测试点3一直显示格式错误,最后发现对于3 4 0 0这样输入的例子,我最终输出时末尾会有多余空格,所以在输出时一定要注意格式的输出。
  3. 在输出时,若当前项的系数为0,不要输出。
  4. 在此题中对于输入结束的判断不应该仅局限于判断多项式的最后一项是否为0,如果这样写,测试点1就会显示超时。还是要用到Day4中提到的while判断的方法来判断输入是否结束。当然,在本地测试的话,mac系统是使用control+C来结束输入,win系统的话应为Ctrl+Z
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cmath>
using namespace std;
int p[1005]={0};
int main() {
    int n;
    int a,b;
    cin >> a >> b;
    n=b;
    if(b!=0)p[b-1]+=a*b;
    while(cin >> a >> b){
       if(b!=0) p[b-1]+=a*b;
    }
    if(n==0){
        cout <<"0 0"<<endl;
        return 0;
    }
    cout << p[n-1] <<" " <<n-1;
    if(n-2<0) return 0;
    for(int i=n-2;i>=0;i--){
        if(p[i]!=0) 
            cout <<" " <<p[i] <<" " <<i;
        if(i==0) cout << endl;
    }
    return 0;
}

还有一个更加简略的解答。

 int main() {
     int a, b, flag = 0;
     while (cin >> a >> b) {
         if (b != 0) {
             if (flag == 1) cout << " ";
             cout << a * b << " " << b - 1;
             flag = 1;
         }
     }
     if (flag == 0) cout << "0 0";
     return 0;
 }

1011 A+B 和 C (15 分)

给定区间 $[−2{31},2{31}] $​内的 3 个整数 \(A、B\)​和\(C\)​,请判断\(A+B\)​是否大于\(C\)​。

输入格式:

输入第 1 行给出正整数 \(T\) (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出。\(A、B\)和\(C\)整数间以空格分隔。

输出格式:

对每组测试用例,在一行中输出 Case #X: true 如果 \(A+B>C\),否则输出 Case #X: false,其中 X 是测试用例的编号(从 1 开始)。

输入样例:

4
1 2 3
2 3 4
2147483647 0 2147483646
0 -2147483648 -2147483647

输出样例:

Case #1: false
Case #2: true
Case #3: true
Case #4: false

解题分析及代码:

本题唯一需要注意的就是A、B、C的范围,因此在定义时我们需定义为long long类型($[−2{31},2{31}-1] $​)并且还需注意的是,不能将A和B加起来再和C进行判断,相反需采用减法运算,将C减去A或B,再与B或A进行比较,否则会出现爆精度的问题,当然Python请随意哈哈哈哈哈哈哈。

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cmath>
using namespace std;
long long a,b,c;
int main() {
    int n;
    cin >> n;
    for(int i=1;i<=n;i++){
        int flag=0;
        cin >> a >> b >> c;
        c-=a;
        if(c<b) flag=1;
        if(flag==1) cout <<"Case #"<<i<<": true"<<endl;
        else cout <<"Case #"<<i<<": false"<<endl;
    }
    return 0;
}

标签:Case,输出,int,多项式,Day5,算法,暑假,include,输入
来源: https://www.cnblogs.com/lvhang/p/15054668.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有