PAT刷题
liyn10
这个作者很懒,什么都没留下…
展开
-
【PAT-B1031】 查验身份证 (15 分)(c++)
#include<iostream>using namespace std;int W[17] = { 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 };char M[17] = { '1', '0' ,'X', '9', '8', '7', '6', '5', '4', '3', '2' };void otos(string id){ cout << id << endl;}void test(){ int num;原创 2021-03-18 23:39:31 · 199 阅读 · 0 评论 -
【PAT-B1021】 个位数统计 (15 分)(c++)
#include<iostream>#include<string>using namespace std;void test01(){ //由于int类型,装不下那么多位数,在此采用string类型 string num; cin >> num; int arr[10] = { 0 }; for (int i = 0; i < num.length(); i++) { int nu = 0; nu = (int)num[i] - 4原创 2021-03-18 22:58:18 · 102 阅读 · 0 评论 -
【PAT-B1006】 换个格式输出整数 (15 分)(c++)
#include<iostream>using namespace std;void test(){ int a,b,c; int num; cin >> num; //分别找出百十个位上的数 a = num /100; b = (num%100) /10; c = num % 10; //cout << a << endl << b << endl <<原创 2021-03-15 23:49:47 · 54 阅读 · 0 评论 -
【PAT-A1058】 A+B in Hogwarts (20 分)(c++)
#include<iostream>#include<stdio.h>using namespace std;void test(){ //输入 int a_g, a_s, a_k, b_g, b_s, b_k; int c_g = 0, c_s = 0, c_k = 0; int sum_g, sum_s, sum_k; scanf("%d.%d.%d %d.%d.%d", &a_g, &a_s, &a_k, &b_g, &原创 2021-03-15 23:33:18 · 59 阅读 · 0 评论 -
【PAT-A1027】 Colors in Mars (20 分)(c++)
【题目分析】 numbers (each between 0 and 168) 最高168 < 13^2 那么: num = a * 13^1 + b * 13^0 -> a、b就是咱们要的! use radix 13 (0-9 and A-C) 将计算好的a、b用 (0-9 and A-C) 代替后输出即可!/*分析: numbers (each between 0 and 168) 最高168 < 13^2 那么: num = a * 13^1 + b原创 2021-03-14 09:34:19 · 149 阅读 · 1 评论 -
【PAT-A1019】 General Palindromic Number (20 分)(c++)
【PAT-A1019】 General Palindromic Number (20 分)【关键点】1、写出进制转换函数,利用除 N 取余法。2、将余数收集到数组中,方便下一步的比较使用。3、进行回文比较,若不等输出且终止程序(只因不等的好找),若等则顺序向下执行。#include<iostream>#include<vector>using namespace std;vector<int> arr;//输出程序void result(vecto原创 2021-03-10 23:13:25 · 72 阅读 · 0 评论 -
【PAT-B1037】 在霍格沃茨找零钱 (20 分)(c++)
#include<iostream>#include<stdio.h>using namespace std;int c_G, c_S, c_K;//一个做差函数,此函数总是大的减去小的int calcu(int a_G, int a_S, int a_K, int b_G, int b_S, int b_K){ if (b_K >= a_K) { c_K = b_K - a_K; } else { c_K = 29 - a_K + b_K;原创 2021-03-09 23:53:44 · 83 阅读 · 0 评论 -
【PAT-B1022】 D进制的A+B (20 分)(c++)
【PAT-B1022】 D进制的A+B (20 分)(c++)【出现问题】第三个测试点出现问题: //进制转化核心代码 while (c > 0) { int temp = 0; temp = c % num; cout << c % num << endl; arr.push_back(temp); c = c / num; }在此代码下出现的问题:【分析】在本地编译器上进行实验,选择最特殊的值:a=0,b=0,无结果,由此:结合代原创 2021-03-09 22:37:37 · 56 阅读 · 0 评论 -
【PAT-A1031】 Hello World for U (20 分)(c++)
【题意】1、两侧面数量要相等。2、下面的数量不小于两侧面的数量3、侧面的数,尽可能的大。4、两侧面的数量与下面的数量的和满足题目给的等式关系。【C++中字符处理】关键点:遍历循环字符串中的所有字符#include<iostream>#include<string>using namespace std;char arr[80] = {};void test(){ string str; int num = 0; int sum = 0; in原创 2021-03-08 23:33:52 · 67 阅读 · 0 评论 -
【PAT-B1027】 打印沙漏 (20 分)(c++)
#include<iostream>#include<string>using namespace std;void test(){ int num; string flag; int putout = 0; cin >> num; cin >> flag; int res = 0; int i = 1; //找出上三角的行数 for ( i ; res < num; i++) { res = 2 * i *原创 2021-03-08 00:06:36 · 124 阅读 · 0 评论 -
【PAT-B1036】 跟奥巴马一起编程 (15分)(c++)
ceil() 向上取整floor() 向下取整round()四舍五入取整#include<iostream>#include<math.h>using namespace std;void test(){ double n; cin >> n; char x; cin >> x; double y; y = n / 2; y = round(y); //cout << round(y) &.原创 2021-01-11 15:20:45 · 104 阅读 · 0 评论 -
【PAT-A1036】 Boys vs Girls (25分)(c++)
#include<iostream>using namespace std;struct Person{ string name; string sex; string id; int score;}Temp,Max,Min;void init(){ Min.score = 200; Max.score = 0;}//男生成绩最低bool mGrade(Person temp,Person min){ //当前的分数比最低的还要小 if (temp.s原创 2021-01-11 14:57:51 · 312 阅读 · 0 评论 -
【PAT-A1006】 Sign In and Sign Out (25分)(c++)
这个题的就是让找最早到的人与最晚离开的人。我使用的核心实现方法就是前两天做的一道题目——PAT-B1028】人口普查 (20分)(c++)#include <iostream>#include <stdio.h>using namespace std;struct INandOUT{ string name; int in_hh, in_mm, in_ss; int out_hh, out_mm, out_ss;}temp, first, last;//初原创 2021-01-10 21:38:43 · 66 阅读 · 0 评论 -
【PAT-A1011】 World Cup Betting (20分)(c++)
1011 World Cup Betting (20分)不涉及算法,顺着往下写就可以。#include<iostream>#include<stdio.h>using namespace std;#include<vector>//找到三个数最大的那个数double max_num(double a, double b, double c){ double max = 0; if (a >= max) { max = a; } if (原创 2021-01-04 22:37:08 · 56 阅读 · 0 评论 -
【PAT-B1032】 挖掘机技术哪家强 (20分)(c++)
1032 挖掘机技术哪家强 (20分)利用数组下表去作为每个学校的编号#include<iostream>using namespace std;void test(){ //创建一个数组 int arr[1000000] = { 0 }; int n; //找一个编号最大的 int max_num = 0; int max_ = 0; cin >> n; for (int i = 0; i < n; i++) { int temp_x,原创 2021-01-03 23:34:08 · 106 阅读 · 0 评论 -
【PAT-B1028】人口普查 (20分)(c++)
【PAT-1028】人口普查 (20分)(c++)有一说一,这道题的思路是借鉴胡凡大神的,这两个比较函数(lessE()、MoreE())写的太巧妙了。#include<iostream>#include<stdio.h>using namespace std;struct Person { string name; int yy, mm, dd;}oldest,youngest,lefter,righter,temp;//如果a的日期小于等于b则返回tru原创 2021-01-03 23:14:26 · 119 阅读 · 0 评论 -
【PAT-B1002】 写出这个数 (20分)(c++)
【PAT-B1002】 写出这个数 (20分)(c++)#include<iostream>#include<string>using namespace std;void test01(){ string s; int sum = 0; cin >> s; int len = s.length(); for (int i = 0; i < len; i++) { string temp; temp = s[i]; int te原创 2020-11-30 10:23:13 · 91 阅读 · 0 评论 -
【PAT-B1004】 成绩排名 (20分)(c++)
【PAT-B1004】 成绩排名 (20分)(c++)#include<iostream>using namespace std;struct Person { string m_Name; string m_id; int m_soc;}stu[1000],res[1000];void test(){ int m = 0; cin >> m; for (int i = 0; i < m; i++) { string name; string原创 2020-11-28 16:48:18 · 74 阅读 · 0 评论 -
【PAT-B1041】 考试座位号 (15分)(c++)
【PAT-B1041】 考试座位号 (15分)(c++)#include<iostream>using namespace std;struct Poly { long long num1; int num2; int num3;}poly[1000];void test(){ vector<int> res; int n = 0; cin >> n; for (int i = 0; i < n; i++) { // cout原创 2020-11-28 16:18:26 · 102 阅读 · 0 评论 -
【PAT-A1002】 A+B for Polynomials (25分)(c++)
【PAT-A1002】 A+B for Polynomials (25分)(c++)注:输出格式要保留一位小数!!!#include<iostream>using namespace std;#include<algorithm>#include <iomanip>void test(){ int exp = 0; double fac = 0; double A[2001] = { 0 }; double B[2001] = { 0 }; do原创 2020-11-26 10:49:36 · 61 阅读 · 0 评论 -
【PAT-B1010】 一元多项式求导 (25分)(c++)
PAT-1010 一元多项式求导 (25分)注:如果求导之后没有任何非零相,需要输出0 0!#include<iostream>#include<vector>using namespace std;void printarr(const vector<int> a){ for (vector<int>::const_iterator it = a.begin(); it != a.end(); it++) { cout <<原创 2020-11-23 21:02:55 · 152 阅读 · 0 评论 -
【PAT-A1065】 A+B and C (64bit)(c++)
1065 A+B and C (64bit)注:long long:所占内存大小:8byte=64bit;所能表示范围:-9223372036854775808~9223372036854775807;(即-2^63~2^63-1)unsigned long: 所占内存大小:8byte=64bit;所能表示范围:0~1844674407370955161;(即0~2^64-1)所以选择:long double#include<iostream>using nam原创 2020-11-22 11:42:35 · 75 阅读 · 0 评论 -
【PAT-A1046】 Shortest Distance (20分)(c++)
PAT-A1046 Shortest Distance (20分)注:没有经过预处理dis数组和sum会很容易超时。在极端情况下需要遍历这个数组。#include<iostream>#include<algorithm> using namespace std;int main(){ int n = 0; int sum = 0; int num_arr[100005] ,dis[100005]; cin >> n; //初始数据 for (in原创 2020-11-22 11:13:37 · 50 阅读 · 0 评论 -
【PAT-A1042】 Shuffling Machine (20分)(c++)
PAT-A1042 Shuffling Machine (20分)【c++】#include<iostream>using namespace std;#include<string>#include<sstream>void test(){ int n = 0; cin >> n; int num[54] = { 0 }; string arr[54] = { "S1","S2","S3","S4","S5","S6","S7","S8原创 2020-11-20 22:28:53 · 58 阅读 · 0 评论 -
【PAT-B1018】 锤子剪刀布 (20分)(c++)
1018 锤子剪刀布 (20分)#include<iostream>using namespace std;#include<vector>int change(char a) { if (a == 'B') { return 0; } if (a == 'C') { return 1; } if (a == 'J') { return 2; }}char enchange(int a) { if (a == 0) { return 'B'原创 2020-11-19 21:58:59 · 55 阅读 · 0 评论 -
【PAT-B1012】 数字分类 (20分)(c++)
PAT-1012 数字分类 (20分)【c++】没想到写了100多行代码去解决这个问题。没能将问题整体考虑,而是去将一个整体问题划分为每一个小的独立问题去解决,这可能就是代码过长的原因吧!#include<iostream>using namespace std;#include<vector>#include<math.h>#include<iomanip>#include<algorithm>void test01(){原创 2020-11-18 21:38:15 · 68 阅读 · 0 评论 -
【PAT-B1008】 数组元素循环右移问题 (20分)(c++)
[c++]PAT-1008 数组元素循环右移问题 (20分)注意点:对输入长度与移动位置进行修正为了方便我的操作:右移2 等价于 左移4。这样只是方便了我!!!不是优化后的!#include<iostream>using namespace std;#include<vector>void test01(){ vector<int> arr; vector<int> arr_new; int len, n = 0; ci原创 2020-11-13 23:01:46 · 55 阅读 · 0 评论 -
【PAT-B1046】划拳 (15分)(c++)
[c++]PAT-1046 划拳 (15分)核心:当甲赢乙未赢,乙输+1当乙赢甲未赢,甲输+1#include<iostream>using namespace std;void guess(int n){ int a, b, d = 0; int c = 0; int a_win = 0; int c_win = 0; for (int i = 0; i < n; i++) { cin >> a; //cout << "a= "原创 2020-11-11 12:28:44 · 129 阅读 · 0 评论 -
【PAT-B1016】 部分A+B (15分)(c++)
PAT-1016 部分A+B (15分)(c++)#include<iostream>using namespace std;#include<math.h>#include<vector>#include<string>void scanf();int find(int num, int f_num);int resv(int num, int n);void scanf(){ int num1, n1, num2, n2; in原创 2020-11-08 11:54:24 · 114 阅读 · 0 评论 -
【PAT-B1011】 A+B 和 C (15分)(c++)
PAT-1011 A+B 和 C (15分)(c++)题目输入数据超过int类型,所以选择长整型。#include<iostream>#include<vector>using namespace std;void test01(){ vector<long long> a_arr; vector<long long> b_arr; vector<long long> c_arr; int n = 0; cin >&g原创 2020-11-07 17:25:29 · 59 阅读 · 0 评论 -
【PAT-B1001】 害死人不偿命的(3n+1)猜想(c++)
PAT-1001 害死人不偿命的(3n+1)猜想#include<iostream>using namespace std;int main(){ int n; int sum = 0; cin >> n; while(n!=NULL){ while (n > 1) { if (n % 2 == 0) { n = n / 2; } else原创 2020-11-06 21:25:45 · 61 阅读 · 0 评论