自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 1049 数列的片段和 (20 分)(C++)

Notice:1.一开始直接写嵌套循环,发现超时。所以需要用数学方法去求解。 后参考别人博客,发现其规律: 先观察一个数,例如,对于N=4的数列中序列号为3的数所在的片段如下: (起点为1)[(1,2,3),(1,2,3,4)]; (起点为2)[(2,3),(2,3,4)]; (起点为3)[(3),(3,4)]; 可以看出来,包含第i个数的片段中,片段的起始可以是1,2,3..i,一共i种选择, (如包含3的片段有123三种选择) 片段的结尾可以是i,i+1,...n.

2021-12-16 14:45:13 918

原创 1044 火星数字 (20 分)(C++)

转载:https://www.liuchuo.net/Noticehash + 进制的计算#include <iostream>#include <string>using namespace std;string a[13] = {"tret","jan", "feb","mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"}; //把tre

2021-12-03 20:18:19 223

原创 1043 输出PATest (20 分)(C++)

NoticeHash散列#include <iostream>using namespace std;int main(){ int map[128] = {0}; string s; cin >> s; for(int i = 0;i < s.length();i++){ //每个字母的个数存入map中 map[s[i]]++; } //输出 while(map['P'] > 0 ||.

2021-12-03 20:10:39 593

原创 1042 字符统计 (20 分)(C++)

NoticeHash散列#include <iostream>#include <string>#include <cctype>using namespace std;int main(){ int a[40] = {0}; //保存36个小写字母的个数 string s; getline(cin,s); //字符串有空格,不能直接用cin char c; for(int i = 0;i < s.length.

2021-12-03 15:42:41 157

原创 1041 考试座位号 (15 分)(C++)

参考:https://www.liuchuo.net/Notice先保存再查找元素#include <iostream>#include <string>using namespace std;string a[1005][2];int main(){ string s; int n,test,k; cin >> n; for(int i = 0;i < n;i++){ //保存数据,试坐号为行下标,准考证号和考试

2021-12-03 12:36:50 829

原创 1040 有几个PAT (25 分)(C++)

转载:https://www.liuchuo.net/Notice1.每次扫描到A,用这个A组成的PAT刚好是A前面的P数量*A后面T的数量.2.因为整型的输出范围是0~2147483648.countp*countt有可能溢出,所以需要对成绩2取模, 每次结果的和也有可能溢出,所以需对每次结果和取模,总之取两次模的目的在于防止数据溢出。#include <iostream>using namespace std;int main(){ string s;

2021-12-03 12:19:41 81

原创 1039 到底买不买 (20 分)(C++)

#include <iostream>using namespace std;int main (){ int v1[256] = {0}; //摊主 int v2[256] = {0}; //小红 string s1; string s2; cin >> s1 >> s2; for(int i = 0;i < s1.length();i++) {v1[s1[i]]++;} for(int..

2021-12-02 22:23:29 76

原创 1038 统计同成绩学生 (20 分)(C++)

NoticeHash散列#include <iostream>using namespace std;int a[110] = {0}; //开一个Hash表,记录各个分数的人数int main (){ int n,k,score; cin >> n; for(int i = 0;i < n;i++){ cin >> score; a[score]++; } cin >&g.

2021-12-02 21:25:22 130 1

原创 1037 在霍格沃茨找零钱 (20 分)(C++)

Notice:1.不同进制的加减运算2.swap()没写头文件,但我查资料发现swap()应该在 <string_view>头文件里 http://www.cplusplus.com/reference/algorithm/#include <iostream>#include <cstdio>using namespace std;int main(){ int g1,g2,g3,s1,s2,s3,k1,k2,k3; scanf(".

2021-12-02 21:12:02 210

原创 1036 跟奥巴马一起编程 (15 分)(C++)

Notice:四舍五入 具体参考https://blog.csdn.net/BatmannLv/article/details/121642463?spm=1001.2014.3001.5502#include <iostream>using namespace std;int main(){ int n,row; char c; cin >> n >> c; row = ((1.0 * n / 2) + 0.5); //行数.

2021-12-02 20:14:52 124

原创 1035 插入与归并 (25 分)(C++)

转载自柳诺https://www.liuchuo.net/#include <iostream>#include <algorithm>using namespace std;int main(){ //输入 int a[110],b[100]; int n; cin >> n; for(int i = 0;i < n;i++){ cin >> a[i]; } fo...

2021-12-02 17:41:17 518

原创 1034 有理数四则运算 (20 分)(C++)

#include <iostream>#include <cstdio>#include <cmath>using namespace std;long long a,b,c,d;//求最大公约数的子函数(辗转相除法)long long gcd(long long m,long long n){ return n ? gcd(n,(m % n)) : m; //return n == 0 ? m : gcd(n,(m % n));}..

2021-12-02 15:44:25 336

原创 1033 旧键盘打字 (20 分)(C++)

Notice:1.测试点2:先输入s1,s2。并且由于s1可能是空字符串, 所以不能用cin >> s1 >> s2,因为cin >> s1不接收空串。 所以s1需要用getline接收(测试点2)。 2.关于cin、getline()的区别: 简单来说,在接受字符串的时候, cin 遇“空格”、“TAB”、“回车”都结束; getline()可以接收空格并输出。(需包含#in.

2021-12-02 10:31:07 288

原创 1032 挖掘机技术哪家强 (20 分)(C++)

#include <iostream>#include <algorithm>#include <vector>using namespace std;int main(){ int n,school,score; int maxscore = 0,maxschool = 1; cin >> n; vector<int> v(n);//用数组来保存学校的数据,下标为学校编号,值为总分。 for(i.

2021-12-01 21:27:13 264

原创 1031 查验身份证 (15 分)(C++)

Notice出错的点:1.char和int类型之间的转换,特别是一开始到最后做比较的时候,我把'X'转换为10, 再存入int char[],发现这样有问题。后来直接改为char code[]再和字符进行比较。我的代码#include <iostream>using namespace std;int main(){ int n,cnt = 0; //cnt为出错的个数 int w[20] = {7,9,10,5,8,4,2,1,6,3,7,9,10,..

2021-12-01 20:47:27 341

原创 1030 完美数列 (25 分)(C++)

two pointersNotice思路: 先对该数列从小到大进行排序(sort()),再从排序后的最小值(即a[0])开始作为m,将之后的数值依次作为M,看是否满足条件( M≤mp),若满足则记录此时的最大值cnt (cnt 为 j - i + 1;).依次记录下去,找出最大的cnt最后输出。#include <iostream>#include <algorithm>using namespace std;int main(){ long long.

2021-12-01 17:28:21 256

原创 1029 旧键盘 (20 分)(C++)

Notice:思路:1.找到坏的键:应该输入字符串s1,实际输入s2. 所以只需要在s2中依次寻找s1中没有的键值。2.防止重复输出坏健:利用一个Hash表去判断之前是够有输出过.思考:1.这道题属实给我写吐了。。最后测试点4死活过不了。 最后发现是判断小写字母时候忘加"="号了。 我的:if(s1[i] > 'a' && s1[i] < 'z') s1[i] -= 32; 正解:if(s1[i] >= 'a' && s1[i] <.

2021-12-01 16:29:08 635 2

原创 1028 人口普查 (20 分)(C++)

Notice:测试点3,cnt为0时候只用输出0即可。否则“格式错误,您的程序输出的格式不符合要求(比如空格和换行与要求不一致)”#include <iostream>using namespace std;int main(){ int n; int cnt = 0; string name,birth,maxname,minname,maxbirth,minbirth; cin >> n; maxbirth = "1814/0.

2021-12-01 11:30:35 265

原创 1027 打印沙漏 (20 分)(C++)

Notice#include <iostream>using namespace std;int main(){ int n; char c; cin >> n >> c; //判断能画多少层,单向,(中间一个*为第0层) int floor = 0; int sum = 1; while(sum <= n){ floor++; sum = sum + 2 .

2021-11-30 22:15:29 308

原创 1026 程序运行时间 (15 分)(C++)

Notce:C++的四舍五入: 思路:如果直接对一个浮点数取四舍五入,不保留小数部分,那么我们的思路是:正数加上0.5,负数减去0.5。#include <iostream>using namespace std;int round1(double number){ return (number>0.0)?(number+0.5):(number-0.5);}或者:#include <iostream>#include <cmath&g.

2021-11-30 20:55:12 239

转载 1025 反转链表 (25 分)(C++)

#include<iostream>#include<algorithm>using namespace std;int main(){ int first,n,k,adress; cin >> first >> n >> k; int list[100005],data[100005],next[100005]; //构造data[adress],next[adress]数组 for(i..

2021-11-30 20:32:46 150

原创 1024 科学计数法 (20 分) (C++)

#include<iostream>#include<cstdio>#include<string>#include<cmath>using namespace std;int main(){ string s; cin >> s; int pos = 0 ; while(s[pos] != 'E')pos++; //此时pos指向E那个字符 string f = s.substr(1,.

2021-11-30 17:18:43 367

转载 关于string、char * 、scanf()、sscanf()

1.char*、char[]及string的区别及相互转换参考:https://www.jb51.net/article/41917.htmhttps://www.cnblogs.com/fonddream/p/9806810.html1.1定义char *s1:s1是一个指向字符串的 指针;char s2[]:s2是一个字符 数组;string s3:s3是一个string类的 对象.string:string是STL当中的一个容器,对其进行了封装,所以操作起来非常方便。首先必须

2021-11-30 15:33:43 283

原创 1021 个位数统计 (15 分)

#include <iostream>using namespace std;int main(){ int a[10] = {0}; string s; cin >> s; for(int i = 0;i < s.length();i++){ a[s[i] - '0']++; } for(int i = 0;i < 10;i++){ if(a[i] != 0) .

2021-11-29 22:20:05 124

原创 1020 月饼 (25 分)

Notice:1.c++中的结构体: struct Mooncake { float num,price,unitp; int a; }; Mooncake b,m1[10]; vector<Mooncake> m2(10); 末尾有分号结尾。2.注意输入数据的类型.#include <iostream>#include <cstdio>#include <algorithm>using namespace.

2021-11-29 21:37:39 173

原创 1019 数字黑洞 (20 分)

Notice:1.sort()函数在<algorithm>中,stoi(),to_string(),s.insert()函数都在<string>中。2.关于s.insert() s.insert( size_type index, size_type count, CharT ch ); s.insert( size_type index, const CharT* s );3.最开始前和每次运算之后要判断是否需要补04.do{ }while(); 至少执行一次,..

2021-11-29 20:22:15 53

原创 1018 锤子剪刀布 (20 分)

Notice:1.输入字符时候按照BCJ的顺序可以使其相等时候按照字母顺序输出。2.#include <iostream>using namespace std;int main(){ //1.保存输入 int N; char a,b; //记录输出 int win1,win2; //输赢的次数. int win1 = 0, win2 = 0; win1 = win2 = 0; int max1,max2; //记录哪个最.

2021-11-29 17:37:24 265

转载 1017 A除以B (20 分)

Notice:1.要把字符换算成int之后再进行运算,如q = (r * 10 + s[i] - '0') / b;2.举例子让思路清晰 b = 3 s为 2,5 s为 25,56#include <iostream>using namespace std;int main(){ //模拟除法过程 string s; int b,q,r,len; cin >> s >> b; len = s.length();.

2021-11-25 18:21:46 54

原创 1016 部分A+B (15 分)

Notice:1.代码中循环里边的处理方式很像进制转换2.为什么此题 string a; cin >> a; 也可以正常赋值??代码#include <iostream>using namespace std;int main(){ int a,a1,a2,b,b1,b2; //int p = 1; a2 = b2 = 0; //p = 1; cin >> a >>.

2021-11-25 17:14:00 56

原创 1014 福尔摩斯的约会 (20 分)

Notice:1. cctype头⽂文件⾥里里的⼀一些函数. isalpha 字母(包括大写、小写) islower (⼩写字母) isupper (⼤写字母) isalnum (字⺟⼤写小写+数字) isblank (space和 \t ) isspace (space 、\t 、\r 、\n ) tolower 转换成小写 toupper 转换成大写2.输出格式:printf("%02d:%02d",t[1],t[2]); 3.字符的加减(ASCII) if(isa.

2021-11-25 16:17:23 69

原创 1013 数素数 (20 分)

起初题意理解错了,以为是输出M和N之间的素数。。。没舍得删TAT,题意是输出第M个和第N个素数之间的所有素数。(素数就是质数)1、输出M和N之间的素数#include <iostream>using namespace std;bool isprime(int a){ //判断是否为素数(质数) for(int i = 2;i * i < a; i++){ if(a % i == 0) return false; }..

2021-11-25 11:36:25 56

原创 1012 数字分类 (20 分)

#include <iostream>#include <cstdio>using namespace std;int main(){ //1.输入 int arr[6] = {0}; int N,a,count = 0,flag = -1; cin >> N; //2.处理 for(int i = 0;i < N;i++){ cin >> a; switch(a %

2021-11-25 00:01:52 419

原创 1011 A+B 和 C (15 分)

我发现就算末尾有空行,提交上去也不报错。。。#include <iostream>using namespace std;int main (){ long a,b,c; //int类型范围不够 int n,flag = 0; cin >> n; for(int i = 0;i < n;i++){ //每输入一行数据就输出一行 cin >> a >> b >> c; i.

2021-11-24 20:52:53 76

转载 1010 一元多项式求导 (25 分)

开始一直在想该用什么数据结构去实现,什么map、结构体啥都想了,感觉实现起来有点复杂。一看别人代码用几个变量就做出来了,我真是太菜了呜呜!感觉自己做题还是太少了,每次做题思路总是局限在一种数据结构,缺乏变通。#include <iostream>using namespace std;int main(){ //每输入两个数据就对其处理并输出,flag用于标记 int a,b,flag = 0; while(cin >> a >> .

2021-11-24 20:28:45 47

转载 1009 说反话 (20 分)

Tips:1、关于 while(cin >> s) cin>>a代表获取键盘输入的值赋值给变量a,将cin>>a置于while的循环条件内即while(cin>>a), 将会一直 测试输入流是否正常。 如果输入流正常,就会继续循环获取键盘值,如果输入流错误,或者达到文件末尾(在 windows下Ctrl+Z,在Linux下Ctrl+D),该循环就会终止。 //https://zhidao.baidu.com/question/201042511..

2021-11-24 18:29:33 46

转载 1008 数组元素循环右移问题 (20 分)

注意:(转载自柳诺)1、要想把数组循环右移m位,只需要先将整个数组a倒置,再将数组前m位倒置,最后将数组后n-m位倒置即可完成循环右移m位2、reverse函数可以实现将⼀一个数组或者vector中元素倒置,这个函数在algorithm头⽂文件中3、如果m⼤大于n,那么循环右移m位相当于循环右移m%n位,因为那些n倍数位的移动是多余的,所以在使⽤用m之前,先将m = m%n#include <iostream>#include <vector>#include .

2021-11-24 17:13:23 173

原创 1007 素数对猜想 (20 分)

注意:1.素数(质数)的判断条件。判断a是否为质数,循环条件到a的开方那个数就行,即 for(int i = 2;i * i <= a;i++){} 前几个质数为:2,3,5,7,9,11,13...2.if(isprime(i - 2) && isprime(i))这种用法#include <iostream>using namespace std; //1.判断是否是素数的子函数isprimebool isprime(int a){ for.

2021-11-23 21:56:53 49

原创 1006 换个格式输出整数 (15 分)

#include <iostream>using namespace std;int main(){ //1.用变量a,b,c保存输入数值的百,十,个位数 int n,a,b,c; a = b = 0; cin >> n; c = n % 10; if(n != 0){ //0不能做除数,但0 % 任何数都为0. b = n / 10 % 10; a = n / 100 % 10; .

2021-11-23 21:09:17 664

原创 1005 继续(3n+1)猜想 (25 分)

思路1、定义一个vector v来保存输入的值。2、定义一个大数组arr[10000]来标记出现过的值(hash散列),作用在于:n值在每运算一次(如n /= 2)之后,都将a[n] = 1;表示该数n已经出过一次了。3、遍历vector中的值,若arr[v[i]] == 0;表示该数还没出现过,为关键值。注意1、大数组一般定义成全局的(main函数外边),防止栈溢出。调用的cmp子函数也定义到外边。2、关于vectord的使用 定义和初始化: vector<int> a;..

2021-11-23 20:33:16 196

原创 1001 害死人不偿命的(3n+1)猜想 (15 分)

代码#include <iostream>using namespace std;int main(){ //在循环体中对n做运算,用变量num记录n到1所需要的步数 int n,num = 0; cin >> n; while(n != 1){ if(n % 2 == 0){ //n为偶数 n /= 2; }else{ //n为奇数 n = (3 * ..

2021-11-23 17:02:05 469

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除