python知识点
这里记录了一些初学Python代码时遇见的知识点。
string函数string模块中记录了一些常用的属性数字,字母等ascii
import string
print(string.ascii_letters) //'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
print(stirng.ascii_lowercase) //'abcdefghijklmnopqrstuvwxyz'
print(string.ascii_uppercase) //'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
print(string.digits) //'0123456789'
大小写转化**upper()**可以将字符串变为大写,可单独使用,可也以放进print**lower()**可以将字符串变为小写,可单独使用,可也以放进print
print(s.upper()) / ...
牛客笔记1
基础题1 World Final? World Cup! (I)(模拟)题目描述:众所周知,2022年是四年一度的世界杯年,那么当然要整点足球题。本题需要你模拟一次点球大战。
假设对战双方为A和B,则点球大战中双方会按照ABABABABAB方式来罚点球,即两队交替罚点球、各罚五次、A队先罚。点球有罚进和罚不进两种结果,罚中的一方加一分。
其判断胜负的规则为得分多者获胜,而若在罚完某一球后(无论是哪队罚的),当前双方比分已经使得无论之后的罚球结果如何都不会影响比赛的结果,则此时比赛结束。特别地,若直到10球踢完都没有分出胜负则再继续加踢更多的点球。
现在,给出接下来双方10个点球的结果,你需要判断点球大战会在踢完几球时结束,或指出10球内没有分出胜负
输入描述:输入第一行包含一个整数T (1≤T≤1024),表示样例组数。
每组测试用例包括一个长度为10的字符串S,第i个字符表示第i个点球的结果,0表示罚不进,1表示罚进
输出描述:对每组测试用例,输出一个整数,表示点球大战会在第几回合结束,若10轮之内没有分出胜负,输出-1。
思路从1开始将每种情况列举出来,对于每种情况进行判断:剩下的 ...
对结构体的理解
在C语言中,数据类型被分为基础数据类型和复合数据类型。
对于基础数据类型我们都有了解,如int,char等,但复合数据类型又是什么情况呢?
复合数据类型分为结构、联合、和枚举。这里我们只谈结构(structure)
结构体的声明和定义struct 【结构体名称】{ 成员1; 成员2; ……} 结构体变量名;*//一定要加分号,这是一个声明的结束。*
例如:声明一种水果的信息
struct fruits{
char name[20];
double price;
double weight;
}a,b,c;
这样我们就成功声明了变量a,b,c;
注意,我们只是声明了a,b,c,并不能给它们赋值,因为对于计算机来说struct{}和int是一个意思,都只是一种类型声明,正如同手搓出一个框架一样。当然,此时struct也是不占用内存的。
我们也可以不加fruits,只声明a,b,c。但这样的结果是我们只能定义a,b,c,不能再定义别的变量。
结构体的使用说完了声明,我们接下来学学如何使用结构体。
与常见的声明一样,我们可以 ...
22级天梯赛题解
基础题1-1 无所谓,我会出手
请直接输出 :“It doesn’t matter,I’ll do it.”(输出不含引号)。
直接输出即可。int main()
{
printf("It doesn't matter,I'll do it.");
return 0;
}
1-2 数组总和
给出一个正整数 n 和一段长度为n的数组a1,a2…an ,请输出1×a1+2×a2+3×a3+4×a 4+…+n×an的结果。
输入格式第一行为 整数 n(1<=n<=1e3)第二行为n 个整数 ai(1<=ai<=1e9)
输出格式输出一行一个正整数,代表题目要求的值。
样例输入41 2 3 4样例输出30
使用for循环,初始化i=1,每次相乘后储存到sum里。注意sum需要long long类型,避免爆int。int main()
{
int n,i;
long long sum=0,x;
scanf("%d",& ...
经典题目
这里记录了一些让我在做题时遇见的自感比较经典且容易出错的题目。
数组元素循环右移问题
一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将最后M个数循环移至最前面的M个位置。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?
输入格式:每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。
输出格式:在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。
输入样例:6 21 2 3 4 5 6输出样例:5 6 1 2 3 4
这是我原来的代码:
#include<stdio.h>
//我的方法是让所有的数组向后移动,再讲最后的几个挪到前面来
int main()
{
int m,n;
scanf("%d%d",&m,&n);
int arr[m];
for(int i=0;i<m;i++){
scanf("%d& ...
22级天梯赛热身心得
今天在打完热身赛补题时发现一处以前没注意到的地方,白白浪费了两个小时进行debug,这里记录一下:
2-1 有理数均值
本题要求编写程序,计算N个有理数的平均值。输入格式:输入第一行给出正整数N(≤100);第二行中按照a1/b1 a2/b2 …的格式给出N个分数形式的有理数,其中分子和分母全是整形范围内的整数;如果是负数,则负号一定出现在最前面。输出格式:在一行中按照a/b的格式输出N个有理数的平均值。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例1:41/2 1/6 3/6 -5/10输出样例1:1/6输入样例2:24/3 2/3输出样例2:1
int gcd(int x,int y);
int main()
{
int n,fenzi=0,fenmu=1,up,down,i;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d/%d",&up,&do ...
进制转换
C语言十进制转d进制(d<10)原理很简单,按照计算方法算出每一位后存入数组,倒序输出即可~
int main()
{
int n,i=0,x,j,d;
int arr[1000];
scanf("%d%d",&n,&d);
if(n==0)
printf("0");
else{
while(n>0){ //想不起来的话把d设成2自己代入一遍
x=n%d;
n/=d;
arr[i]=x;
i++;
}
for(j=i-1;j>=0;j--){ //逆序输出
printf("%d",arr[j]);
}
}
return 0;
}
d进制转十进制(d<10)int mai ...
递归与递推
递归与递推是编程问题中重要的思想,如何更好的理解?看完这篇文章你可能会有收获。
递归递归定义
递归,就是在运行的过程中不断调用自己本身。可以分为“递”和“归”两个过程,“递”得到每一个小步的结果,再通过“归”将每次运算的结果结合起来。最后得到答案。
递归优缺点
优点:代码简解易懂,思维方式符合我们思考的逻辑。
缺点:运行效率低,需要调用很多栈来储存返回点和局部量等,容易造成栈溢出。
递推递推定义
递推,就是从问题的初始条件出发,通过观察得出某种关系式,通过这个关系式推出各项结果。
递推优缺点
优点:很好的发挥了计算机重复计算的优点,不会像递推一样占用过多的内存空间。
缺点:想象不到递推的关系式,从源头上直接gg(doge 。
例子裴波那契数列
有一对小兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。按此规律,假设没有兔子死亡,第一个月有一对刚出生的小兔子,问第n个月有多少对兔子?
在草稿纸上进行简单的演算,我们会发现:第一个月1对,第二个月1对,第三个月2对,第四个月3对,第五个月5对,第六个月8对,第七个月13对……从第三项开始,每个月的 ...