ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

PTA 题解2

2022-01-23 19:03:08  阅读:87  来源: 互联网

标签:int 题解 cin PTA ++ num printf include


一.1010 一元多项式求导

使用while的循环输入,以及输出结果的格式化

#include <iostream>
using namespace std;
int main()
{
    int a,b,p=1;
    while(cin>>a>>b)//循环输入.
    {
        if(b!=0)//b为0的时候,系数和指数都是0
        {
           if(p==0)cout<<" ";
          cout<<a*b<<" "<<b-1;
           p=0;
        }
    }
    if(p)cout<<"0 0";
    return 0;
}

二.1011 A+B 和 C (15 分)

使用三目运算符 ? :

#include <iostream>
using namespace std;
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        long long a,b,c;
        cin>>a>>b>>c;
       printf("Case #%d: %s\n",i+1,a+b>c?"true":"false");
    }
    return 0;
}

三.1012 数字分类 (20 分)(柳神的代码)

对vector的使用,以及if语句

#include <iostream>
#include <vector>
using namespace std;
int main() {
    int n, num, A1 = 0, A2 = 0, A5 = 0;
    double A4 = 0.0;
    cin >> n;
    vector<int> v[5];
    for (int i = 0; i < n; i++) {
        cin >> num;
        v[num%5].push_back(num);
    }
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < v[i].size(); j++) {
            if (i == 0 && v[i][j] % 2 == 0) A1 += v[i][j];
            if (i == 1 && j % 2 == 0) A2 += v[i][j];
            if (i == 1 && j % 2 == 1) A2 -= v[i][j];
            if (i == 3) A4 += v[i][j];
            if (i == 4 && v[i][j] > A5) A5 = v[i][j];
        }
    }
    for (int i = 0; i < 5; i++) {
        if (i != 0) printf(" ");
        if (i == 0 && A1 == 0 || i != 0 && v[i].size() == 0) {
            printf("N"); continue;
        }
        if (i == 0) printf("%d", A1);
        if (i == 1) printf("%d", A2);
        if (i == 2) printf("%d", v[2].size());
        if (i == 3) printf("%.1f", A4 / v[3].size());
        if (i == 4) printf("%d", A5);
    }
    return 0;
}

四.1006 Sign In and Sign Out (25 分)

我使用了结构体,从而使,名字与时间的对应关系明了

#include <iostream>
#include <string>
using namespace std;
struct A
{
	string name;
	string time1;
	string time2;
}n[1000];
int main()
{
	int k,min=0,max=0;
	cin >> k;
	for (int i = 0; i < k; i++)
		cin >> n[i].name >> n[i].time1>>n[i].time2;
	for (int i = 1; i < k; i++)
	{
		if (n[min].time1>n[i ].time1)min = i;
		if (n[max].time2 < n[i].time2)max = i;
	}
	cout << n[min].name << " "<<n[max].name;
	return 0;
}

五.1008 Elevator (20 分)

使用while语句循环,if语句判断求和.

#include <iostream>
using namespace std;
int main()
{
	int num[1000] = { 0 }, n, k = 0;
	cin >> n;
	for (int i = 0; i < n; i++)
		cin >> num[i];
	k = num[0] * 6 + n * 5;//没一层都要停5s,所以先给他加起来,然后在家第一次所用的时间。
	int j = 0;
	while (j!=n-1)
	{
		int a = num[j++];//前一层
		int b = num[j];//后一层
		if (a > b)k += (a - b) * 4;//用前一层与后一层比较,再选择是6s还是4s。
		else k += (b - a) * 6;
	}
	cout << k;
	return 0;
}

标签:int,题解,cin,PTA,++,num,printf,include
来源: https://blog.csdn.net/m0_62740234/article/details/122655174

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

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

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

ICode9版权所有