这一切的一切 还要从选拔赛说起。
小菜鸡一枚~希望有错误大家在评论区指正!感谢( ^ o ^ )
或者有更优方案推荐 在这里提前感谢!!!
不要嫌我戏多喔 可以直接点目录看干货!
期末人最后d e倔(le)强(qu)

这里写目录标题

  • 石家庄铁道大学新生选拔赛
    • D:蒲煜凡爱质数
    • 题目描述
    • 输入描述:
    • 输出描述:
    • 示例1
    • 输入
    • 输出
    • 备注:
    • E:蒲煜凡的约会
    • 题目描述:
    • 输入描述:
    • 输出描述:
    • 下面是我~~*错误示范*~~ !!!
    • 正确代码
    • F:蒲煜凡与徐利峰大魔王
    • G:甘靖的普通话
    • 题目描述:
    • 示例
    • 错误1:数组要放在主函数外面 不然就会被上面那个晃得眼花缭乱!?
    • 错误2:判断时加一个flag(变量)更清晰,明确
    • C: 蒲煜凡送花
    • 代码如下:

石家庄铁道大学新生选拔赛


以前的坑 一点一点填吧
先是判断质数 然后是大整数求余

D:蒲煜凡爱质数

题目来自:牛客网
链接:https://ac.nowcoder.com/acm/contest/9564/D

题目描述

蒲煜凡学长最近学习了素数的许多性质,于是他养成了一种怪癖,只会选择素数,对合数视而不见。
自从他在CCPC省赛中获得金牌后,就一直答应要带ACM算法协会的成员聚餐,这一天终于到来了!
他带领着所有成员来到了学校的餐厅,正当所有人准备点菜的时候,他大喝一声:只能选择价格为质数的菜肴!
作为ACM算法协会未来的成员,现在请你来计算一下,蒲煜凡学长一共有多少种点菜策略呢?
众所周知,由于蒲煜凡学长特别抠门,所以如果看到价格特别高,他也有可能一道菜都不点哦~ 由于答案可能会比较大,最后答案需要对1e9 + 7取余。

输入描述:

第一行包含一个整数n,1<=n<=1e3, 第二行有n个数组,每个数字的范围是1∼1e8

输出描述:

输出最后答案

示例1

输入

6
1 344 34 17 5 2

输出

8

备注:

温馨提示:取模就是对当前数字取余数

小白大一 语言:C语言 上代码

#include <stdio.h>
#include <math.h>
int isPrime (int x);
int main()
{int cd[2020];int n;scanf("%d",&n);int num=0;for(int i=0;i<n;i++){scanf("%d",&cd[i]);if(isPrime(cd[i]))num++;//判断素数个数}long long jq=1;for(int k=1;k<=num;k++)jq=(jq*2)%1000000007;printf("%lld",jq);return 0;
}
int isPrime ( int x )
{if(x==1)return 0;if(x==2)return 1;//注意1、2的返回值。double q=sqrt((double)x)+1;//注意sqrt函数的调用int i;for(i=2;i<=q;i++){if(x%i==0) return 0;}return 1;
}

题目思路:
pyf同学购买方案种类如下:

如果有1道菜,
那么有两种情况(买+不买)=2^1;
如果有2道菜,
全不买1+买一个2+买两个1=4=2^2;
如果有3道菜,
全不买1+买一个3+买两个3!/2!+全买1=8=2^3;
以此类推可得最终是2^n种购买方案,并对其求余;

我的收获如下:
(1)在判断素数时,注意1、2的返回值(!并且<0的数也要考虑的喔),重要的是对sqrt函数的运用。虽然在现在看来没什么区别,但如果以后要做大程序的话可能会节省很多时间!划重点!!!
(2)在最后求余数的时候,基于高中数学,我们都知道会发生指数爆炸,所以 最终数字可能会很大,所以我们需要边循环边求余。

E:蒲煜凡的约会

题目来自:牛客网
链接:https://ac.nowcoder.com/acm/contest/9564/E

题目描述:

蒲煜凡学长跟学妹出来约会了!蒲煜凡学长作为一名标准直男,想要给学妹买一杯奶茶,便问学妹喜欢喝什么样的奶茶,学妹回了两个字 随便!
蒲煜凡学长傻眼了,但作为一名优秀的ACMer,他是不会坐以待毙的,他早早便将学妹喜欢喝的奶茶价格和奶茶店的价格表弄到了手!现在你要根据奶茶价格,判断学妹到底喜欢喝哪一种奶茶,如果有多种奶茶价格都符合要求,输入种类靠前的一种。

输入描述:

第一行包含一个整数n,表示有n种奶茶
第二行有n个数字a[i],a[i]表示第i种奶茶价格
第三行包含一个整数Q,表示Q次询问
第四行包含Q个整数x[i],
表示学妹喜欢喝的第i杯奶茶的价格,如果没有找到,则输出-1

输出描述:

输出Q行,每行一个整数表示答案

示例1

输入
6
1 2 10 5 3 2
1
3
输出
5

示例2

输入
5
3 1 7 5 8
2
6
7
输出
-1
3

备注:

1 ≤ Q ≤ 1e5, 1 ≤ n ≤ 1e6 奶茶价格都在int范围内~

初看这道题,它貌似很简单的样子,其实也蛮考虑你两个数组之间关系的转换的,也要花上菜鸟一段时间去思考呢!

下面是我~~错误示范~~ !!!

#include <stdio.h>
int main()
{int jiag[100000];int x[100000];int n;scanf("%d",&n);for(int i=0;i<n;i++)scanf("%d",x);//表示第i种奶茶的价格是x[i];int Q;scanf("%d",&Q);int money;for(int j=0;j<Q;j++){//   printf("j=%d",j);scanf("%d",&money);for(int k=0;k<Q;k++){//  printf("k=%d\n",&k);if(x[k]==money){printf("最终答案是%d!\n",k);break;}}printf("\n");}return 0;
}

由于第一次写的代码 可以正常输入,但是无法给出正确的值。我去看了看其他小伙伴的代码。他们弃C从C++。但是我还是想用C写这道题。
看了看其他大佬提交的代码,发现 破题关键在于奶茶价格需要是一个数组的下标!!
已经可以自己试数字成功了,但是到了case0的纠错阶段!!为什么啊啊啊啊啊啊(被拖去debug)

#include <stdio.h>
int main()
{int arr[100007]={0};int n;scanf("%d",&n);int num=0;long long a;do{static int i=-1;i++;scanf("%lld",&a);//即第i+1杯奶茶的价格是数组下标anum++;if(arr[a]==0){arr[a]=i+1;//这里是为了以后判断输入的价格是否对应前面已知的价格。}}while(num<n);int Q;scanf("%d",&Q);long long money;for(int j=0;j<Q;j++){scanf("%lld",&money);if(arr[money]!=0)printf("%d",arr[money]);else if(arr[money]==0)printf("-1\n");}return 0;
}

瞅瞅这代码,多对啊


接下来是for(int i=0;i<1000000;i++)printf(“最”);重要的一步!!!!
你知道对一个小白最大的坎儿是什么吗!就是你的代码哪里都没有问题, 就是少了个‘\n’
酱酱酱!

正确代码

如下吼吼~

#include <stdio.h>
int main()
{int arr[100007]={0};int n;scanf("%d",&n);int num=0;long long a;do{static int i=-1;i++;scanf("%lld",&a);//即第i+1杯奶茶的价格是数组下标anum++;if(arr[a]==0){arr[a]=i+1;//这里是为了以后判断输入的价格是否对应前面已知的价格。}}while(num<n);int Q;scanf("%d",&Q);long long money;for(int j=0;j<Q;j++){scanf("%lld",&money);if(arr[money]!=0)printf("%d\n",arr[money]);else if(arr[money]==0)printf("-1\n");}return 0;
}

几点小建议:
(1)这个题如果用C语言写的话,搞不清楚对应关系的话可以用断点或者printf各种循环的值,慢慢就清楚啦;(个人比较推崇后者,更直观,不用一直暂停 开始什么的)
(2)
每个输出一定要带’\n’!!!
每个输出一定要带’\n’!!!
每个输出一定要带’\n’!!!

(3)另外这个还用到了我最近期末复习用的知识点!!开心喔刚刚整理的就用到了!那就是static int 这个通俗来说就是可以让你i值在经过一次循环以后,以上次循环结束时候的值为初始值进行计算,肥肠好用哦~~码住码住!!!❤❤❤

F:蒲煜凡与徐利峰大魔王

这个题打算在并查集小专题里一起写:其实是想拖延,每天一问:今天你并查集做了吗?

**

G:甘靖的普通话

这个题好有趣啊,不由得想起高中化学选修3的1s 2s 2p 3s 3p……所以打算也补一下咯n(≧▽≦)n

来源:
牛客网 石家庄铁道大学新生选拔赛
链接:https://ac.nowcoder.com/acm/contest/9564/G

题目描述:

大多数情况下甘靖学长说普通话时都很标准,但有时却令人抓狂,这件事困扰他很久了,突然有一天,他想通过读数字来纠正他的发音,
但是他不想按正常的顺序读数字,于是他按照某种规律写了一些数字在黑板上,比如如果他想数到9,那么他会把数字写成如下格式: 1 2 6 7 3
5 8 4 9 如果他想数到15,那么他会把数字写成如下格式: 1 2 6 7 15 3 5 8 14 4 9 13 10 12 11
他突然发现他写数字的规律是个蛇形,具体描述是这样的:
对于每一条左下-右上的斜线,从左上到右下依次编号1,2,…,2n-1;按编号从小到大的顺序,将数字从小到大填入各条斜线,其中编号为奇数的从左下向右上填写,编号为偶数的从右上到左下填写

输入描述:

输入一个不大于10000的正整数n,表示要填充到的数字的大小

输出描述:

按规律输出这些数字,相邻两个元素之间用单个空格间隔

示例

输入

50

输出

1 2 6 7 15 16 28 29 45 46
3 5 8 14 17 27 30 44 47
4 9 13 18 26 31 43 48
10 12 19 25 32 42 49
11 20 24 33 41 50
21 23 34 40
22 35 39
36 38
37

虽然题目很有趣,但是丝毫找不到规律呢~
所以去康了康lsc大佬 的博文,已三连

差点头脑一昏“拾人牙慧”,我要创建属于我自己的代码!!
关键点1:根据输入的n值来看斜着的有几行

如果n=1;斜着的只有1行;
如果n=1+2;斜着的有2行;
如果n=1+2+3;斜着的有3行;
如果n=1+2+3+4;斜着的有4行;
……
那么规律很显然假设一个等差数列n;
a1=1,d=1;an=n;Sn=(1+n)*n/2;
显然 我们要寻找n值与这个Sn之间 关系
所以机智的小李会用什么方法来判断呢?(戏真多啊你!!打飞~小李:我一定还会回来 的!)
显然 窃取了大佬的代码!

int i,j=0;
int count=0;
for (i = 1; j < n; i++) {j += i;//这个就是上面说的等差数列count++;//}

关键点2:斜着给数组赋值

for (i = 1; i <= count; i++) {for (int k = 1; k <= i; k++) {if (i % 2 == 1)//小李还想倔强的做一个从0开始数数的程序猿,最后败在这里!还是直接点比较容易看。┭┮﹏┭┮a[i + 1 - k][k] = ++l;elsea[k][i + 1 - k] = ++l;if (l == n)break;}}

关键点3:如何输出二维数组

 for (i = 1; i <= count; i++){if (i > 1)printf("\n");int m = 1;while (a[i][m])printf("%d ", a[i][m++]);}//相当于两个循环嵌套 先按行来。


本来满心欢喜的自信满满的小李懵了!找问题找问题。

错误1:数组要放在主函数外面 不然就会被上面那个晃得眼花缭乱!?

错误2:判断时加一个flag(变量)更清晰,明确

#include <stdio.h>
int a[210][210];
int main()
{int n;scanf("%d",&n);int i,j=0;int num=0;for(i=1;j<n;i++){j += i;//这是前面说的等差数列num++;//这个计算你的斜行有几行}int m;for(m=0,i=1;i<=num;i++){for(int k=1;k<=i;k++){if(m==n)break;if(i%2==1)a[i+1-k][k]=++m;else a[k][i+1-k]=++m;if(m==n)break;}}for(int i=1;i<=num;i++){if(i>1)printf("\n");//每行回车进行蛇形走位int hh=1;while(a[i][hh])printf("%d ",a[i][hh++]);//鸣谢lsc大佬先踩雷}
}

~~呼呼呼终于来到了最后一题,本来以为会很难。后来lsc大佬告诉我就是一个简单的循环输入输出。菜鸟决定试一试!~

C: 蒲煜凡送花

链接:https://ac.nowcoder.com/acm/contest/9564/C
来源:牛客网

题目描述:

蒲煜凡学长最近迷上了一个漂亮的小学妹,他想送一朵特别的花给这个小学妹。
他现在有一把N朵漂亮的花,每多花都有a[i]个花瓣,如果有1朵花的花瓣数与其他任意一朵花的花瓣数之差等于2,那么他可以选择把这朵花扔掉,也可以选择丢弃。
请问经过若干次操作之后蒲煜凡学学长能找到唯一的一支特别的花送给小学妹吗?

输入描述:

第一行一个整数t(1<=t<=500)表示测试样例数
每个测试样例第一行一个整数n(1<=n<=1e4)表示花的数量,第二行n个整数a [ i ] ( 2 <= a [ i ] <= 1e6)表示花瓣数。

输出描述:

输出t行"YES"or"NO"

示例:

示例1

输入
1
4
2 4 6 8
输出
YES

示例2

输入

1
5
9 3 5 6 7
输出
NO

这个和前面买奶茶的题一样,是两个数组之间下标与数值之间的小把戏罢了!
关键点1:

 memset(p,0,sizeof(p));

memset()函数
memset()函数原型是

extern void *memset(void *buffer, int c, int count)

buffer:指针或数组,
c :是赋给buffer的值,
count:是buffer的长度.
这个我其实不太理解,因为数组定义的时候若没有输入数值的话不就默认都是‘\0’?
关键点2:
寻找每个数之间的差值,如果每个数之间差值都为2,那么一定可以找到特别的花。如果差值出现不是2的,那么就找不到特别的花。

代码如下:

#include<stdio.h>
#include<string.h>
int num[100010],m,n;
int p[1000010];
int main(void)
{scanf("%d",&m);for(int j=0;j<m;j++){scanf("%d",&n);memset(p,0,sizeof(p));for(int i=0;i<n;i++){scanf("%d",&num[i]);p[num[i]+2]=1;//只要每朵花瓣都可以被其他花瓣消掉,就证明可以找到特别的花p[num[i]-2]=1;}int flag=0;for(int i=1;i<n;i++){if(p[num[i]]==0) {flag=1;break;}}if(flag==1)printf("NO\n");else printf("YES\n");}return 0;
}

两周有感,感谢大佬们!学到很多。yyds!!

牛客网 石家庄铁道大学新生选拔赛相关推荐

  1. 牛客网平台常州大学新生寒假训练会试

    A-添加逗号 链接:https://www.nowcoder.net/acm/contest/78/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其 ...

  2. 牛客网 第十七届中国计量大学程序设计竞赛(同步赛)(重现赛)B题 Broken Pad 暴力+思维

    题意: 给你两个01串,经过两种操作,1.直接让第一串经过操作变成目标串:2.可以点击空白处,即0的地方,使得操作串全部清空为0串,再变为目标串:最终比较两种方式,哪种需更少步骤,输出每步点击的位置. ...

  3. 西安电子大学计算机考研复试机试(2019)+ 牛客网(完数/矩阵求和/)

    第一题: /* 1.找出一个数所有的因子 2.判断是否该数是完数 3.将此放入一个大循环中,找到所有的完数 */ #include<stdio.h> bool perfectNum(int ...

  4. 运维校招面经汇总(来源牛客网)

    shopee SRE 作者:Stackingrule 链接:https://www.nowcoder.com/discuss/626107?source_id=discuss_experience_n ...

  5. 牛客网-推理判断练习

    牛客网-练习 1.存疑时有利于被告原则是指在刑事诉讼中遇到事实无法查清或查清事实所需成本过高的情况,依照有利于被告的原则判决. 根据上述定义,下列表现符合该原则的是: 正确答案: C 你的答案: C ...

  6. oppo测试面经汇总,来自牛客网

    1.Android事件处理机制 答:Activity通过dispatchTouchEvent分发事件,如果需要处理事件则调用onTouchEvent()消费事件,事件循环结束: 如果Activity不 ...

  7. 牛客网——歪脖子树下的灯

    牛客网--歪脖子树下的灯 题目链接:https://ac.nowcoder.com/acm/contest/24803/L 题目来源:牛客网2021年广东工业大学第11届腾讯杯新生程序设计竞赛(同步赛 ...

  8. SQL日常练习2-进阶篇-牛客网

    本文章目的: 在于对SQL系统化学习后,进行: 1,日常练习,巩固基础: 2,加深对SQL知识: 3,总结SQL相关知识体系: 4,或者某有朝一日能快速捡起相关SQL知识. 5,同时结尾附带有KES数 ...

  9. 牛客网 精品课程 《直通BAT面试算法精讲课》 优惠码立减10元

    牛客网 精品课程 <直通BAT面试算法精讲课> 优惠码 专属优惠码为:AszaxMb 或者直接打开专属优惠购课链接: http://www.nowcoder.com/courses/1?c ...

最新文章

  1. 外部样式表声明的样式并不会进入style对象
  2. 简单剖析智能指针的思想
  3. [HDOJ3308]LCIS(线段树,区间合并)
  4. 微服务组件记事本:Skywalking执行效果 · 多图篇
  5. Java基本语法(9)--逻辑运算符(逻辑短路)与或非
  6. 《架构之美》阅读笔记06
  7. Python简单GUI(随机点名)
  8. 怎样实现短信验证功能
  9. php中的三元运算符
  10. Atitit 算法之道 attilax著 1. 第二部分(Part II) 排序与顺序统计(Sorting and Order Statistics) 1 2. 第六章 堆排序(Heapsort)
  11. 词频统计软件_单词词频统计小软件
  12. python-math函数
  13. selenium 模拟登录qq空间
  14. FDDB人脸数据集dataset的dataset数据集的制作
  15. APISpace 全国行政区查询API 方便好用
  16. Java将指定文件/文件夹压缩成zip、rar压缩文件--解決中文乱码
  17. 【性能测试】JMeter性能测试(一)-入门篇
  18. 英文的pdf文件怎么翻译成中文
  19. Python3,1行代码,去除图片的背景图,确实香。
  20. 调用Python的PyAutoGUI模块中的doubleClick函数无反应

热门文章

  1. 如何给apk安装包去毒,避免被识别为病毒和木马
  2. 微信最近点赞拿东西服务器,微信朋友圈点赞说明什么?点赞的行为背后隐藏着什么含义呢?...
  3. Linux虚拟机配置NAT模式上网时,ping不通百度等网站但能ping通局域网ip解决办法
  4. C语言实现求π/4=1-1/3+1/5-1/7+···求π的近似值,直到某一项的绝对值小于10-6为止
  5. 工作的驱动力——成就感
  6. 3月16日---3月20日课程表
  7. 带癞子麻将查表判断胡牌高效率低内存算法
  8. C Primer Plus 第九章 大二第二学期 第二天学习
  9. 智能语音将成下一代人机交互新入口
  10. 论文翻译-ASTER: An Attentional Scene Text Recognizer with Flexible Rectification