算法笔记 --第三章 入门篇(1) 入门模拟

这里写图片描述

读书笔记

日期处理

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= a 1 a 2 a 3 . . . . . . a n 1 a n
公式 y = a 1 P n 1 + a 2 P n 2 + . . . . . . . . + a n 1 P + a n

// x 是输入的数,P是x的进制
    int y=0,product=1;
    while(x!=0){
        y=y+(x%10)*product;         
        x/=10;
        product*=P;
    }

输入的x可能intlong long装不下,要用字符串才能装下。小心这个坑

10进制转换为P进制
除基取余法即可

//y是输入,Q是y的进制
    int z[40],num=0;
    do{
        z[num++] = y%Q;
        y/=Q;
    }while(y!=0);

在倒叙输出就行了
这题D进制下的A+B,是这方面的题

字符串处理

千变万化

猜你喜欢

转载自blog.csdn.net/weixin_41256413/article/details/81167021
今日推荐