标签:
今天是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:0
1:1
2:4 6
3:7 3
4:6
5:5
6:6
7:9 3 1 7
8:4 2 6 8
9:9
然后用余数找对应的那一个
标签:
原文地址:http://www.cnblogs.com/liuhanx1/p/5373163.html