pat乙级题解目录

标号标题题型
1001害死人不偿命的(3n+1)猜想模拟
1002写出这个数字符串处理
1003我要通过!数学题,map
1004成绩排名查找最值
1005继续(3n+1)猜想hash 散列
1006换个格式输出整数字符串处理
1007素数对猜想素数
1008数组元素循环右移问题数学题
1009说反话字符串处理
1010一元多项式求导模拟
1011A+B 和 C模拟
1012数字分类模拟
1013数素数素数
1014福尔摩斯的约会字符串处理
1015德才论排序
1016部分A+B模拟
1017A除以B模拟
1018锤子剪刀布模拟
1019数字黑洞字符串处理
1020月饼贪心
1021个位数统计字符串处理, hash 散列
1022D进制的A+B进制转换
1023组个最小数贪心,hash散列
1024科学计数法字符串处理
1025反转链表模拟链表
1026程序运行时间模拟
1027打印沙漏图形打印
1028人口普查查找最值
1029旧键盘hash 散列
1030完美数列双指针,查找最值
1031查验身份证字符串处理
1032挖掘机技术哪家强查找最值
1033旧键盘打字hash 散列
1034模拟
*1035插入与归并排序
1036跟奥巴马一起编程图形打印
1037在霍格沃茨找零钱模拟
1038 统计同成绩学生hash 散列
1039到底买不买hash 散列
1040有几个PAT数学题
1041考试座位号hash 散列
1042字符统计hash 散列
1043输出PATesthash 散列
1044火星数字进制转换,字符串处理
1045快速排序排序
1046划拳模拟
1047编程团体赛hash 散列
1048数字加密字符串处理
1049数列片段和数学题
1050螺旋矩阵图形打印
1051复数乘法模拟
1052卖个萌字符串处理
1053住房空置率模拟
1054求平均值字符串处理
1055模拟
1056组合数的和模拟
1057数零壹进制转换,hash 散列
1058选择题字符串处理, set
1059C语言竞赛素数,map
*1060爱丁顿数逻辑题
1061判断题模拟
1062最简分数模拟
1063谱半径查找最值
1064朋友数hash 散列
1065单身狗set,map
1066图像过滤模拟
1067试密码模拟
**1068模拟,map
1069微博转发抽奖模拟,map
1070结绳贪心
1071小赌怡情模拟
1072开学寄语模拟, map
**10731058加强
1074宇宙无敌加法器字符串处理
1075链表元素分类模拟链表
1076Wifi密码模拟
1077互评成绩计算查找最值
1078字符串压缩与解压字符串处理
1079延迟的回文数字符串处理
1080MOOC期终成绩unordered_map、排序
1081检查密码字符串处理
1082射击比赛查找最值
1083是否存在相等的差hash 散列
1084外观数列字符串处理
1085unordered_map
1086就不告诉你字符串处理
1087有多少不同的值unordered_map
1088三人行逻辑题
1089模拟
1090unordered_map
1091N-自守数字符串处理
1092最好吃的月饼查找最值
1093字符串A+Bhash 散列
1094谷歌的招聘字符串处理
1095解码PAT准考证unordered_map
  • 散列表:下标、映射值

  • 字符串处理
    字符数字转换:stoi() to_string()
    排序逆置:sort() reverse()
    前缀后缀:s.insert(s.begin(), s.end(), c) s.append(n, c)
    查找截取:s.find( c) s.substr(pos,n)
    格式判断:sscanf(s, 格式, &temp) sprintf(s, 格式, temp)
    多选题比较:<set> 存储

  • 判断素数

bool IsPrime(int n) {
	if (n < 2) return false;
	
	int limit = int(sqrt(n*1.0));
	for (int i = 2; i <= limit; i++)
		if (n % i == 0) return false;
	return true;
}
  • 筛素数
bool vis[maxn] = {false};
void Sieve() {
    for (int i = 2; i <= maxn; i++) {
        if (!vis[i]) {
            for (int j = 2*i; j <= maxn; j += i)
                vis[j] = true;
        }
    }
}
  • 模拟链表
// 链表节点
const int maxn = 1e6+10;

struct node{
	int address, key, next;
}nod[maxn];

int head1 = 0, n = 0;
cin >> head1 >> n;

// 初始化
int address = 0, key = 0, next = 0;
for (int i = 0; i < n; i++) {				// 不带头结点,i 可以从 0 开始
    cin>>address>>key>>next;
	nod[address].address = address;
    nod[address].key = key;
    nod[address].next = next;
}

// 装入向量
vector<node> list1;
for (head1; head1 != -1; head1 = nod[head1].next) 
	list1.push_back(nod[head1]);

// 更新下标
int sum = list1.size();
for (int i = 0; i < sum-1; i++)
	list1[i].next = list1[i+1].next;
list1[sum-1].next = -1;

// 格式化打印
for (int i = 0; i < sum - 1; i++)
	printf("%05d %d %05d\n", list1[i].address, list1[i].key, list1[i].next);
printf("%05d %d -1\n", list1[sum-1].address, list1[sum-1].key);
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值