PAT乙级1001-1030总结

小学期之际,时间比较充足,除了对算法和c++学习之外,尝试用c++开始重做PAT乙级题目

目前完成了30道,总结下前30道中遇到的小技巧,和一些知识,希望能给自己加深印象,如果能便利其他人就更好了

第一套:

1001:无

1002:要求读出这个数的每个数字,当然要用string数组分别存储yi,er,san,si,wu等

1003:能有一个P一个T,中间末尾和开头可以随便插入A。但是必须满足开头的A的个数 * 中间的A的个数 = 结尾的A的个数,而且P和T中间不能没有A,用map容器,对字符的个数进行统计

1004:无

1005:对验证过的数用数组存起来

第二套:

1001:用数组存起来三个字母的个数

1002:无

1003:M要对N取余,因为M的大小没有规定,可能会出现周期的问题(转一圈又回来了)

1004:stack容器,把元素压入栈顶,如果栈不为空,就弹出栈顶元素,轻松实现倒叙

1005:无

第三套:

1001:范围恰好可以用long long int,不需要转换成字符串处理

int 范围: -2147483648~2147483647  (10位数)   

long long int范围:-9223372036854775808~9223372036854775807  (19位数) 

1002:无

1003:统计素数的个数,

while(num<N);   if (a% 10 != 1) cout<<' ';if(a%10==0) cout<<endl;

1004:无

1005:重点是cmp的写法,这里借用一下柳神的写法

int cmp(struct node a, struct node b) {
    if ((a.de + a.cai) != (b.de + b.cai))
        return (a.de + a.cai) > (b.de + b.cai);
    else if (a.de != b.de)
        return a.de > b.de;
    else
        return a.num < b.num;
}

第四套

1001:无

1002:大数的模拟除法,核心代码

  for (int i = 1; i < len; i++) {
        t = (temp * 10 + s[i] - '0') / a;
        cout << t;
        temp = (temp * 10 + s[i] - '0') % a;
    }

1003:无

1004:无

1005:用一个结构体分别存单价,总价,总量,优先把单价最高的全部售出,emm这个好像还是开学初学长给的题

第五套

1001:无

1002:核心代码

    while (t != 0) {
        s[i++] = t % d;
        t = t / d;
    }

1003:排序从小到大,先放大于0的最小的那个然后顺序放,注意他给的是个数不是数字

1004:用string,和getline(cin,a);直接获取字符串,然后找E以前的和E以后的进行操作

1005:next数组的操作

第六套

1001:无

1002:打印图形,数学题,2 * M - 1

1003: 直接用字符串保存年龄最小的和年龄最大的,分别为1814/09/06和2014/09/06,直接和输入的字符串比较大小,并保存最大最小的字符串

1004:用字符串的find(),string::npos是没有相同的,find找的是下标,toupper()小写变大写;

1005:外层循环从0开始,内层循环从i+result开始,核心代码

	for (int i = 0; i < n; i++) {
		for (int j = i + result; j < n; j++) {
			if (v[j] <= v[i] * p) {
				temp = j - i + 1;
				if (temp > result)
					result = temp;
			}
			else {
				break;
			}
		}
	}

 

最后感谢柳神,学长,老师,和同学们

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值