PAT备战札记

从知道和听说PAT考试到现在已经很久了,但最近才真正下定决心考这个东西。早些时候也陆陆续续刷过官网上的真题,但都是抱着好玩的心态去换一下脑子。最近两个星期才开始高密度的杀题,也正是这样让我重拾C语言和C++。自从学了Python之后,我的惰性展现的愈发明显,能用Python的决定不用C和C++,这似乎成了我的人生信条。起初也是一直用Python,但PAT的OJ是真的严格,好几次AC不过。
不过我发现基本上第一道15分的题用Python解决起来真的很方便,当然在使用Python之前也要考查一下时间复杂度。
对于基础比较薄弱的建议可以先看一下大神漫浸天空的雨色写的Codeup《算法笔记》的解析+代码~~传送门:codeup《算法笔记》题目索引(题目+解析+代码)
然后自己总结一下这几天发现的难点问题:

1)大数的输入输出及其运算

谈到大数,到底什么叫大数,多大的数才能称之为大数呢?
我们都知道int类型的数据他的范围在 − 2 31 ∼ 2 31 − 1 -2^{31}\sim2^{31}-1 2312311也就是在 − 2147483648 ∼ 2147483647 -2147483648\sim2147483647 21474836482147483647之间,那么超过这个范围了我们应该怎么办呢?很显然需要用到long long类型,他的范围在 − 2 63 ∼ 2 63 − 1 -2^{63}\sim2^{63}-1 2632631也就是在 − 9223372036854775808 ∼ 9223372036854775807 -9223372036854775808\sim9223372036854775807 92233720368547758089223372036854775807之间,然而有些时候这样的范围还是不够,这个时候,如果没有负数的情况的话,我们可以考虑一个无符号长整数类型——unsigned long long。他的范围在 0 ∼ 18446744073709551615 0\sim18446744073709551615 018446744073709551615。如果最后数还是很大的话,那就考虑用字符串来接收和处理数据,他的四则运算根据我们熟知的四则运算法则边处理边输出。这个过程就涉及到数字字符转数字、数字字符串转数字,数字转字符串等问题,这些问题都有专门的函数替我们解决,最主要的还是如何实现四则运算的问题。这样就不用涉及大数的运算从而导致溢出。如果非要存储的话用字符串来存。

2)字符串的处理
需求方法
求字符串的长度strlen(m)
m.length()
m.size()
字符串复制strcpy(a,b)//将b复制到a中
分离数字的每一位如果数字不定长,需要计算数字有多少位,然后分别对前一位的数量级取余再对自己的位取商。
第二种办法:用字符串接收,然后遍历字符串,分别将遍历得到的字符使用字符-‘0’的方式获得单个数字
数字字符串转化为整形数字调用<stdlib.h>中的atoi()函数。语法为:int a=atoi(“str”);
整型数字转化为字符数组调用<stdlib.h>中的itoa()函数。语法为:int n;char[len] a=atoi(n,a,10);//最后的10是以什么进制转化
英文字符串大小写转换可以将每个字符分别±32
使用函数:调用头文件<cctype>中的toupper——转大写;tolower——转小写
3)set和map
4)未完待续……
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值