今天是4月9号,一天都窝在寝室里面,早上看了逆风笑的视频,笑笑真是高产如母猪哇(笑)。他又做了很多游戏解说,因为喜欢,所以能一下子做出那么多吧。
还听了好多歌,李纹的,都挺好听的。
主要是一天没吃饭,下午就去刷hdu的steps去了,果然是太弱了。
4月16号就要校赛网络赛了,就是下周六,然后下下周日就是现场赛了。
想起来陕师大的那次,真是非常后怕啊!
不过今天刷题还是有些收获的,希望这个月可以坚持,以后也要坚持,算是入门!
今天学习的一些知识:
1.排序
(1)使用strtok分割一个字符串
这个函数的头文件是string.h,调用方式是p=strtok(a,"5");//a是字符串,引号里面的是分隔符
(2)使用atoi(alphanumeric to integer)函数让一个字符串转化为一个整型,这个函数的头文件是stdlib.h
具体用法参见下面的代码啦~
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int main()
{
char s[1001];
char *p;
int num[1000];
while(~scanf("%s",s))
{
int cnt=0;
memset(num,0,sizeof(num));
p=strtok(s,"5");
num[cnt++]=atoi(p);
while(p!=NULL)
{
num[cnt++]=atoi(p);
p=strtok(NULL,"5");
}
sort(num,num+cnt);
for(int i=0;i<cnt-2;i++)
{
printf("%d ",num[i]);
}
printf("%d\n",num[cnt-1]);
}
return 0;
}
2.Rank
这个很有指导性意义啊,因为做的时候竟然卡了很久很久,主要是读入的时候,方法也要优化嘤嘤。
20070101 20070102 100 20070101 33 20070103 22 20070106 33 0 0输出 2看这个样例,一般我之前的做法是用一个结构体存储,但是~~用一个一维数组存储需要排序的分数就可以了.读入的时候while(~scanf("%d",&Jack){ int a,b; while(~scanf("%d%d",&a,&b)) { if(a==0&&b==0) break; …… }}找到与学号匹配的分数,然后从头与它比较一下大小就可以找出名次了。 3.A+Bcoming读入十六进制数,直接用%x就好了,大小写都支持,不用自己再去写转化进制的函数了。 4.decimal system就是自己写一个进制转换的函数还有读入的时候 43(8)用 scanf("%d(%d)",&a,&b);写一个其他进制数转换为十进制数的函数int power(int a,int n){ int ans=1; for(int i=0;i<n;i++) ans*=a; return ans;}int change(int a,int b){ int ans=0; for(int i=0;a;i++) { ans+=a%10*power(b,i); a/=10; } return ans;}5.Vowel Counting(元音字母计数)这个主要就是大小写转化在ctype.h里面有函数toupper(小写字母转化为大写字母)和tolower(将大写字母转化为小写字母)嗯……就没什么了。。6,rightmost digit 问N^N最后一位是什么,这个就是找规律了。0:01:12:4 63:7 34:65:56:67:9 3 1 78:4 2 6 89:9然后用余数找对应的那一个