![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PATB
猪突猛进!
这个作者很懒,什么都没留下…
展开
-
《算法笔记》学习记录 Part 2
第五章 数学问题:5.1 简单数学问题:PAT-B 1003. 我要通过!(20) PAT-B 1019. 数字黑洞 (20) PAT-B 1049. 数列的片段和(20) 5.2 最大公约数与最小公倍数: 最大公约数的两种写法,运用的原来是欧几里得算法(即辗转相除法)int gcd(int a,int b){ return !b?a:gcd(b,a%b);}int gcd(int a...原创 2018-02-27 19:17:19 · 236 阅读 · 0 评论 -
二分的思想和应用
1 . 二分查找//A[]为递增序列,x为欲查询的数,函数返回第一个大于等于x的元素的位置//二分上下界为左闭右闭,[left,right],传入的初值为[0,n]int lower_bound(int A[],int left,int right, int x){ int mid; while(left<right){ //对于[left,right]来说,left==right意...原创 2018-02-23 13:08:27 · 218 阅读 · 0 评论 -
PATB1030.完美数列(25)
题目链接:点击打开链接知识点笔记:AC代码:#include <cstdio>#include <algorithm>using namespace std;/* * 1.先排序 * M <= m * p,则称这个数列是完美数列。 */int main() { long long n,p,a[100010]; scanf("%lld %lld",&...原创 2018-02-22 20:36:40 · 249 阅读 · 0 评论 -
PATB1023. 组个最小数(20)
题目链接:点击打开链接知识点笔记:AC代码:#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int main() { int num[10]; for(int i=0;i<10;i++){ scanf("%d",&num[i]);...原创 2018-02-22 18:53:00 · 218 阅读 · 0 评论 -
PATB1020. 月饼(25)
题目链接:点击打开链接知识点笔记:AC代码:#include <cstdio>#include <cstring>#include <algorithm>using namespace std;struct INFO{ double stock; double sum; double price;}cake[1010];bool cmp(I...原创 2018-02-22 17:17:52 · 148 阅读 · 0 评论 -
PATB1005.继续(3n+1)猜想(25)
题目链接:点击打开链接知识点笔记:AC代码:#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int main() { bool hashTable[10000]; memset(hashTable,false,sizeof(hashTable)...原创 2018-02-22 10:28:11 · 334 阅读 · 0 评论 -
PATB1047.编程团体比赛(20)
题目链接:点击打开链接知识点笔记:AC代码:#include <cstdio>using namespace std;int main() { int n; scanf("%d",&n); int group,player,score; int hashTable[1010]={0}; for(int i=0;i<n;i++){ scanf("%d-...原创 2018-02-22 10:26:43 · 179 阅读 · 0 评论 -
PATB1043.输入PATest(20)
题目链接:点击打开链接知识点笔记:AC代码:#include <cstdio>#include <cstring>using namespace std;int main() { char dic[6]={'P','A','T','e','s','t'}; int count[6]={0}; int num=0; char str[10000]; gets...原创 2018-02-22 10:24:54 · 163 阅读 · 0 评论 -
PATB1042.字符统计(20)
题目链接:点击打开链接知识点笔记:AC代码:#include <cstdio>#include <cstring>using namespace std;int main() { char str[1010]; gets(str); int hashTable[256]; memset(hashTable,0,sizeof(hashTable)); in...原创 2018-02-22 10:22:25 · 229 阅读 · 0 评论 -
PATB1039.到底买不买(20)
题目链接:点击打开链接知识点笔记:AC代码:两种方法#include <cstdio>#include <cstring>#include <algorithm>using namespace std;void f1();const int MAXN = 1010;int HashTable[80]={0},miss=0;int change...原创 2018-02-22 10:20:57 · 232 阅读 · 0 评论 -
PATB1033.旧键盘打字
题目链接:点击打开链接知识点笔记:见注释AC代码:#include <cstdio>#include <cstring>using namespace std;int main() { bool hashTable[256]; memset(hashTable,true,sizeof(hashTable)); //建议初学者使用memset赋值0或-1 //...原创 2018-02-22 10:17:46 · 286 阅读 · 0 评论 -
PATB1048.数字加密(20)
题目链接:点击打开链接知识点笔记:AC代码:#include <iostream>using namespace std;int main() { char numbers[] = {'0','1','2','3','4','5','6','7','8','9','J','Q','K'}; char A[110],B[110]; scanf("%s %s",A,B); in...原创 2018-02-22 10:06:01 · 351 阅读 · 0 评论 -
Tow Pointers
1. 给定一个正整数序列和一个正整数M,求序列中的两个不同位置的数a和b,使a+b=M while(i<j){ if(a[i]+a[j]==m){ printf("%d %d\n",i,j); i++; j--; }else if(a[i]+a[j]<m){ i++; }else{ j--; } }2.序列合并问题,假设有两个递增...原创 2018-02-23 15:02:47 · 201 阅读 · 0 评论 -
其他一些小技巧和算法
1. 打表 1,在程序中一次性计算出所有需要用到的结果,之后的查询直接取这些结果 2,在程序B中分一次或多次计算出所有需要用到的结果,手工把结果写在程序A的数组中,然后再程序A中直接使用这些结果 3,对一些感觉不会做的题目,先用暴力程序计算小范围数据的结果,然后找规律2. 随机选择算法 从一个无序的数组中求出第K大的数 题目:给定一个由整数组成的集合,集合中的整数各不...原创 2018-02-24 13:34:46 · 286 阅读 · 0 评论 -
PATB1034.有理数的四则运算
题目链接:点击打开链接知识点笔记:AC代码:#include <iostream>#include <cmath>using namespace std;typedef long long ll;struct Fraction{ ll up,down; //分子 分母};//求最大公约数ll gcd(ll a,ll b){ if(b==0) return...原创 2018-02-25 18:02:13 · 373 阅读 · 0 评论 -
PATB1013.数素数(20)
题目链接:点击打开链接知识点笔记:AC代码:#include <cstdio>using namespace std;int M,N;const int maxn = 999999;int prime[maxn],pNum=0;bool p[maxn]={0};void find_prime(){ for(int i=2;i<maxn;i++){ if(p[...原创 2018-02-25 17:17:58 · 238 阅读 · 0 评论 -
PATB1007.素数对猜想(20)
题目链接:点击打开链接知识点笔记:AC代码:#include <cstdio>using namespace std;int n;const int maxn=100010;int prime[maxn],pNum=0;bool p[maxn]={false};void find_prime(int n){ for(int i=2;i<=n;i++){ //是小...原创 2018-02-25 17:16:13 · 175 阅读 · 0 评论 -
PATB1049.数列的片段和(20)
题目链接:点击打开链接知识点笔记:AC代码:#include <cstdio>#include <algorithm>using namespace std;int gcd(int a,int b){ if(b==0) return a; else return gcd(b,a%b);}int main() { int n; scanf("%d",...原创 2018-02-25 17:14:25 · 228 阅读 · 0 评论 -
PATB1019.数字黑洞(20)
题目链接:点击打开链接知识点笔记:AC代码:#include <cstdio>#include <cstring>#include <algorithm>using namespace std;bool cmp(int a,int b){ return a>b;}int maxNum(int n){ int num[4]; for(in...原创 2018-02-25 17:12:21 · 173 阅读 · 0 评论 -
PATB1003.我要通过(20)
题目链接:点击打开链接知识点笔记:AC代码:#include <iostream>#include <cstring>using namespace std;int main() { int n; char str[100]; scanf("%d",&n); while(n--){ scanf("%s",str); int len = str...原创 2018-02-25 17:10:35 · 402 阅读 · 0 评论 -
求素数 Eratosthenes筛法(埃氏筛法)
最正常的从2枚举到sqrt(n)的求素数表的方法的时间复杂度是O(n*sqrt(n)),在10^5级别以内是没有什么问题的,但是超过10^5就可能会力不从心了。Eratosthenes筛法,时间复杂度可以达到O(n)。还有更效率的欧拉筛法,等学习到再补充。#include <cstdio>#include <algorithm>#include <cmath>...原创 2018-02-25 17:06:15 · 433 阅读 · 0 评论 -
分数的四则运算
#include <cstdio>#include <algorithm>using namespace std;struct Fraction{ int up,down; //分子 分母};//求最大公约数int gcd(int a,int b){ if(b==0) return a; else return gcd(b,a%b);}//分数...原创 2018-02-25 14:30:33 · 517 阅读 · 0 评论 -
《算法笔记》学习记录 Part 1
第三章 入门模拟:3.1 简单模拟:PAT-BPAT-B 1001 害死人不偿命的(3n+1)猜想 (15) PAT-B 1011.A+B和C (15) PAT-B 1016. 部分A+B (15) PAT-B 1026. 程序运行时间(15) PAT-B 1046. 划拳(15) PAT-B 1008. 数组元素循环右移问题 (20) PAT-B 1012. 数字分类 (20) PAT-B 1...原创 2018-02-27 19:17:31 · 470 阅读 · 0 评论 -
PATB1040. 有几个PAT(25)
题目链接:点击打开链接知识点笔记: 对于一个A,能组成PAT的个数为左边P的个数乘以右边T的个数 AC代码:#include <cstdio>#include <cstring>using namespace std;const int MAXN = 100010;const int MOD = 1000000007;int main() { ch...原创 2018-02-24 15:37:06 · 209 阅读 · 0 评论 -
PATB1045.快速排序(25)
题目链接:点击打开链接知识点笔记: 用两个数组leftMax和rightMin,leftMax[i]和rightMin[i]分别表示i左边最大的数和i右边最小的数,这样一来,判断a[i]是不是主元,只需要判断a[i]>leftMax[i] && a[i]<rightMin[i]AC代码:#include <cstdio>#include &l...原创 2018-02-24 15:08:47 · 221 阅读 · 0 评论 -
PATB1029.旧键盘(20)
题目链接:点击打开链接知识点笔记: 1.小写转化为大写 c -=32;AC代码:#include <cstdio>#include <cstring>using namespace std;int main() { char str1[100],str2[100]; bool hashTable[128]={false}; gets(str1); g...原创 2018-02-20 18:07:26 · 284 阅读 · 0 评论 -
PATB1015.德才论(25)
题目链接:点击打开链接知识点笔记:1.注意这种比较的思维,先处理上限和下限,再缩小范围AC代码:#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using namespace std;struct Student{ char id[9]...原创 2018-02-20 10:17:57 · 864 阅读 · 0 评论 -
PATB1037.在霍格沃兹找零钱(20)
题目链接:点击打开链接知识点笔记: 1.可以将数据封装起来,定义 const int Galleon = 17*29; AC代码:#include <iostream>using namespace std;int main() { int a1,a2,a3; int b1,b2,b3; scanf("%d.%d.%d %d.%d.%d",&a1,&...原创 2018-02-12 15:32:13 · 203 阅读 · 0 评论 -
PATB1022. D进制的A+B(20)
题目链接:点击打开链接知识点笔记: 1.p进制数x转换为十进制数yint y=0,product=1; while(x!=0){ y=y+(x%10)*product; //x%10是为了每次获取x的个位数 x=x/10; product = product * P; } AC代码:#include <iostream>using namespace s...原创 2018-02-12 14:38:54 · 186 阅读 · 0 评论 -
PATB1036.跟奥巴马一起编程
题目链接:点击打开链接知识点笔记: 1.注意四舍五入的问题AC代码:#include <iostream>using namespace std;int main() { int n; char c; scanf("%d %c",&n,&c); int temp; if(n%2==0) temp=n/2; else temp=n/2+1; fo...原创 2018-02-12 10:06:31 · 161 阅读 · 0 评论 -
PATB1027.打印沙漏(20)
题目链接:点击打开链接知识点笔记:1.关键点是求出最大层的符号数量,用解方程的方法求出后取整,注意必须是奇数,得出的是偶数要减一处理AC代码:#include <iostream>#include <cmath>using namespace std;int main() { int n; char c; scanf("%d %c",&n,&c...原创 2018-02-11 14:36:19 · 222 阅读 · 0 评论 -
PATB1010.一元多项式求导(20)
题目链接:点击打开链接知识点笔记:1.首先是关于EOF的输入问题,我的是Mac OS系统下是 回车后control+D2.数组越界问题,本来设置的数组大小是10000,代码是AC了,但是自己的编译器上出现越界,设置成1010后正常AC代码:#include <cstdio>int main() { int x[1010]={0}; int k,n,count=0; //k为系数,...原创 2018-02-09 16:08:48 · 429 阅读 · 1 评论 -
PATB1004.成绩排名(20)
题目链接:点击打开链接AC代码:#include <iostream>using namespace std;struct Student{ char name[12]; char id[12]; int score;}stu[1010];int main() { int n; int max=-1,min=101; int idmax,idmin; scanf...原创 2018-02-09 22:03:00 · 186 阅读 · 0 评论 -
PATB1041.考试座位号(15)
题目链接:点击打开链接知识点笔记: 1.学会使用结果体 2.灵活运用数组下表AC代码:#include <cstdio>const int maxN=1010;struct Student{ long long id; int examSeat;}testSeat[maxN]; //以试机座位号作为下表记录考生int main(){ int n,m,sea...原创 2018-02-09 20:20:35 · 257 阅读 · 0 评论 -
PATB1018.锤子剪刀布(20)
题目链接:点击打开链接知识点笔记:1.将字符的比较转换成数字的比较2.用getchar()吸收空格AC代码:#include <iostream>using namespace std;int change(char c){ if(c=='B') return 0; if(c=='C') return 1; if(c=='J') return 2;}int main(...原创 2018-02-09 01:17:45 · 420 阅读 · 0 评论 -
PATB1001.(3n+1)猜想
开始刷算法笔记,基础不太好,慢慢来吧,努力进步题目链接:点击打开链接 AC代码:#include <iostream>using namespace std;int main() { int n; int count=0; scanf("%d",&n); while(n!=1){ if(n%2==0) n/=2; else n=(3*n+1)/2; coun...原创 2018-01-15 19:33:05 · 253 阅读 · 0 评论 -
PATB1016.部分A+B(15)
题目链接:点击打开链接 AC代码:#include using namespace std;int main() { long long A,B; int DA,DB; int PA=0; int PB=0; scanf("%lld %d %lld %d",&A,&DA,&B,&DB); while(A>1){ if(A%10==DA){ PA=PA*原创 2018-01-16 18:49:10 · 166 阅读 · 0 评论 -
PATB1032. 挖掘机技术哪家强(20)
题目链接:点击打开链接在第二个循环里,jAC代码#includeint main() { int n; scanf("%d",&n); int number[100010]={0}; int ID; int score; for(int i=0;i<n;i++){ scanf("%d %d",&ID,&score);原创 2018-01-17 18:20:34 · 330 阅读 · 0 评论 -
PATB1028.人口普查(20)
题目链接:点击打开链接知识点笔记: 1.注意比较方法的使用 2.最后需要判空输出AC代码:#include <cstdio>struct person{ char name[10]; int y,m,d;}youngest,oldest,left,right,temp;bool lessEqu(person a,person b){ if(a.y!=b.y) retu...原创 2018-02-12 20:33:39 · 886 阅读 · 0 评论 -
PATB1006.换个格式输出整数(25)
题目链接:点击打开链接知识点笔记:1.数组设大一点,防止越界AC代码:#include <cstdio>int main() { int n; scanf("%d",&n); int num[4]={0}; for(int i=0;i<3;i++){ num[i]=n%10; n/=10; } if(num[2]!=0) for(int i=0...原创 2018-02-12 22:48:46 · 193 阅读 · 0 评论