2019-02-15 PAT 甲级 1056-1059刷题感受

2019-02-15 PAT 甲级 1056-1059刷题感受

题目分值得分
1056250
10573017
10582020
10592525
总分10062

​ 做了很长时间,发现时间不够了。打开手机定时,emmm算错时间了,好像只是做了两个小时的题目。如果在坚持一下可能就更好了,以后还是8点开始做题比较好一点吧。有点小尴尬。应该找一本书跟着课本的内容进行连贯性的刷题学习比较好吧。没有出现图的题目,可能这次比较简单吧。


1056 25分 / 0分

​ emmm…这是什么题面,没有看懂,看了半个小时直接放弃了。一次提交也没有,也是很尴尬。后来觉得没有时间直接放弃了。

1057 30分 / 17分

​ 按照题目含义,只是模仿栈。其中添加了关于排序问题,通过sort进行排序,还是存在超时的问题,可能有其他的思路进行优化。由于不是全分,怕误导广大网友,还是不粘贴代码了。

1058 20分 / 20分

​ 没有用到大数模拟,所以并不是需要写很多,关键是考虑好字符串的切分和进制问题吧。在做题的过程中,理解题意有思路在敲,不然很浪费时间。其中对于二维数组传递问题,通过**date的方法在函数之间传递。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
int adate[4];
int bdate[4];
int date[4];
char str[234];

bool getValue(char* str, int *date)
{
    int len = strlen(str);
    int top = 0, num = 0;
    for(int i = 0; i <= len; i++)
    {
        if(str[i]=='.' || str[i] =='\0')
        {
            date[top++] = num;
            num = 0;
        }
        else
        {
            num *= 10;
            num += str[i] - '0';
        }
    }
    return true;
}


int main()
{
    scanf("%s", str);
    getValue(str, adate);
    scanf("%s", str);
    getValue(str, bdate);
    int flag = 0;
    for(int i = 2; i >= 0; i--)
    {
        date[i] = adate[i] + bdate[i] + flag;
        if(i==2)
        {
            flag = date[i] / 29;
            date[i] = date[i] % 29;
        }
        else if(i==1)
        {
            flag = date[i] / 17;
            date[i] = date[i] % 17;
        }
    }
    for(int i = 0; i < 3; i++)
    {
        printf("%d", date[i]);
        if(i!=2)
            printf(".");
        else
            printf("\n");
    }
    return 0;
}

1059 25分 / 25分

​ 普通程设题目的样子,long int类型还进行了提示。所以不是很难,有个别点比如0=0这种情况是需要考虑到的。虽然只占着2分,但是就像那句话,学霸考100,你考98,学霸考100分因为试卷只有100分。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;

int main()
{
    long int date;
    scanf("%ld", &date);
    if(date==1||date==0)
    {

        printf("%ld=%ld\n",date, date);
        return 0;
    }
    else
        printf("%ld=", date);
    int top;
    for(int i = 2; date!=1; i++)
    {
        top = 0;
        while(date%i==0)
        {
            top++;
            date = date / i;
        }
        if(top==1)
            printf("%d", i);
        else if(top>1)
            printf("%d^%d", i, top);
        if(top!=0&&date!=1)
            printf("*");
    }
    printf("\n");
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值