首页 > 其他分享 >PAT Basic 1060. 爱丁顿数

PAT Basic 1060. 爱丁顿数

时间:2023-04-01 13:46:06浏览次数:55  
标签:PAT int 1060 爱丁顿 骑车 days Basic allFlag

PAT Basic 1060. 爱丁顿数

1. 题目描述:

英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数” \(E\) ,即满足有 \(E\) 天骑车超过 \(E\) 英里的最大整数 \(E\)。据说爱丁顿自己的 \(E\) 等于87。

现给定某人 \(N\) 天的骑车距离,请你算出对应的爱丁顿数 \(E\)(\(≤N\))。

2. 输入格式:

输入第一行给出一个正整数 \(N\) (\(≤10^5\)),即连续骑车的天数;第二行给出 \(N\) 个非负整数,代表每天的骑车距离。

3. 输出格式:

在一行中给出 \(N\) 天的爱丁顿数。

4. 输入样例:

10
6 7 6 9 3 10 8 2 7 8

5. 输出样例:

6

6. 性能要求:

Code Size Limit
16 KB
Time Limit
250 ms
Memory Limit
64 MB

思路:

根据题目描述,爱丁顿数\(E\)的取值范围在\(0 \sim days\)之间,所以定义一个\(days+1\)大小的int数组记录每种候选值的合法天数。最后为找到最大整数\(E\),倒序遍历数组,当合法天数大于等于当前整数时,输出爱丁顿数\(E\)。

这里第一次提交时testpoint3报segmentation fault,检查代码后发现递增合法天数时,没有限制上限,导致数组越界。改过来后testpoint3又报time limit exceeded,为缩短时间,额外定义了一个allFlag变量,即所有候补值的合法天数都需要递增时就不再遍历数组的每一个元素,而是直接递增allFlag,改过来后AC。

最后虽然AC了,但是感觉这种方法还是有些冗余,最后参考大佬题解:1060. 爱丁顿数(25)-PAT乙级真题_柳婼的博客-CSDN博客 ,她通过排序的思路得出了结果。

My Code:

#include <stdio.h>
#include <stdlib.h> // calloc header

// first submit testpoint3 segmentation fault.
// (Your program get a segmentation fault. Segfaults are caused by a program trying to read or write an illegal memory location.)
int main(void)
{
    int days=0;
    int *pInt = NULL;
    int i=0; // iterator
    int temp=0;
    int j=0; // iterator
    int allFlag = 0;
    
    scanf("%d", &days);
    
    pInt = (int *)calloc(days+1, sizeof(int)); // E in (0 ~ days), days+1 possibility
    
    for(i=0; i<days+1; ++i)
    {
        scanf("%d", &temp); // here forget to restrict temp, may cause out of range!!!
//         if(temp>days) temp = days; // here fixed segment fault, but testpoint3 cause time limit exceeded.
        if(temp>days) // here use allFlag fixed time limit exceeded.
        {
            ++allFlag;
        }
        else
        {
            for(j=0; j<temp; ++j)
            {
                ++pInt[j];
            }
        }

    }
    
    for(i=days; i>=0; --i)
    {
        if(pInt[i]-i +allFlag >= 0)
        {
            printf("%d", i);
            break;
        }
    }
    
    free(pInt);
    return 0;
}

标签:PAT,int,1060,爱丁顿,骑车,days,Basic,allFlag
From: https://www.cnblogs.com/tacticKing/p/17278495.html

相关文章

  • Spatial Join,空间连接
    WelearnedhowtousetheSpatialJointooltoattachinformationfromoneattributetabletoanotherbasedonthespatialrelationshipofthefeaturesinvolved.Itisaveryusefultoolthatcanhelppeopleworkefficiently.However,Iamnotveryfam......
  • 解释器模式(Interpreter Pattern)
    一、概念解释器模式(InterpreterPattern)用于构造一个简单的语言解释器,将字符串按照自定义的方式解释执行,是一种不常用的设计模式除非从事底层开发自己需要去定义较为复杂的表达式,否则基本上不同这个设计模式二、适用场景(1)当一个语言需要解释执行,并可以将该语言中的句子......
  • PAT Basic 1059. C语言竞赛
    PATBasic1059.C语言竞赛1.题目描述:C语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽:0、冠军将赢得一份“神秘大奖”(比如很巨大的一本学生研究论文集……)。1、排名为素数的学生将赢得最好的奖品——小黄人玩偶!2、......
  • PAT Basic 1058. 选择题
    PATBasic1058.选择题1.题目描述:批改多选题是比较麻烦的事情,本题就请你写个程序帮助老师批改多选题,并且指出哪道题错的人最多。2.输入格式:输入在第一行给出两个正整数N(≤ 1000)和M(≤ 100),分别是学生人数和多选题的个数。随后M行,每行顺次给出一道题的满分值(不超过5的......
  • PAT Basic 1057. 数零壹
    PATBasic1057.数零壹1.题目描述:给定一串长度不超过 \(10^5\) 的字符串,本题要求你将其中所有英文字母的序号(字母a-z对应序号1-26,不分大小写)相加,得到整数N,然后再分析一下N的二进制表示中有多少0、多少1。例如给定字符串 PAT(Basic),其字母序号之和为:16+1+20+2+1+19......
  • SQL Server – 执行计划和各种 join 方式 (Execution plan & Join Pattern)
    What,When,Why?什么是ExecutionPlan?Executionplan里头包含了query执行时的各做information,比如IO速度,查找了多少rows等等为什么要看ExecutionPlan?当query慢的时候,可以通过分析executionplan,知道它为什么慢,然后做优化.怎样优化?优化的方法有......
  • PAT Basic 1056. 组合数的和
    PATBasic1056.组合数的和1.题目描述:给定N个非0的个位数字,用其中任意2个数字都可以组合成1个2位的数字。要求所有可能组合出来的2位数字的和。例如给定2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为330。2.输入格式:输入在一行中先给出N(1 < N < ......
  • 使用UI Automation实现自动化测试 --微软提供的控件Pattern
    微软提供的控件PatternSystem.Windows.Automation命名空间System.Windows.Automation.BasePattern为控件模式类提供基实现System.Windows.Automation.DockPattern表示在某个停靠容器内公开其停靠属性的控件System.Windows.Automation.ExpandCollapsePatte......
  • 使用flask中flask_script时,报错:ModuleNotFoundError: No module named 'flask._compat
    方法1:降级版本pipinstall"Flask==1.1.4"pipinstall"werkzeug==1.0.1"方法2:不降级版本:可以尝试修改一下flask_script/__init__.py中from._compatimporttext_type......
  • ubuntu ftp 基本FTP命令 Basic FTP Commands
    YoucanuseFTPtotransferfilesfromyourMacOSXSnowLeopardcomputerwithanFTPserverbyusingthecommand-lineinterface(CLI);tousetheCLI,opena......