读书笔记
日期处理
case1:
不要把年月日yyyy:mm:dd分开处理,而是装入long long,如下
long long date = yyyy*10000+mm*100+dd;
这题:人口普查,用这种处理方法是最好的
case2:只能硬上的情况
如果是这个情况,就要注意平年和闰年,大月和小月的情况。
大小月可以使用二维数组解决
int month[13][2]={
{0,0};{31,31};{28,29};{31,31};{30,30};{31,31};{30,30};
;{31,31};{31,31};{30,30};{31,31};{30,30};{31,31}
};
判断平闰年
普通年:能被4整除但不能被100整除的年份为普通闰年。
世纪年:能被400整除的为世纪闰年。
int isLeap(int year){
return (year % 4 == 0 && year %100 != 0) || (year %400 == 0);
}
进制转换
P进制转换为10进制
对于数A=
公式
// x 是输入的数,P是x的进制
int y=0,product=1;
while(x!=0){
y=y+(x%10)*product;
x/=10;
product*=P;
}
输入的x可能int或long long装不下,要用字符串才能装下。小心这个坑
10进制转换为P进制
除基取余法即可
//y是输入,Q是y的进制
int z[40],num=0;
do{
z[num++] = y%Q;
y/=Q;
}while(y!=0);
在倒叙输出就行了
这题D进制下的A+B,是这方面的题
字符串处理
千变万化