Life of xhu

About

HOJ_1080 & 博客界面改造完成!

Jan 23, 2014

  |   #C++   |   #HOJ   |   #Frontend

今天下午去九江新华书店看书,其实是真想找一些好的编程书的,无奈书店里计算机方面的书实在太次,充斥着计算机科学书架的满满的都是《Dreamwaver》高级教程《Photoshop》入门经典之类的书,看来这里的管理员是分不清美工和视频工作者和码农的。终于在一个书架上找到了编程书,结果扑面而来的全是各种《XX天学会XXX语言》之类的“教程”,好不容易找到了一本写RoR的,发现作者连MVC框架是什么都讲不清楚,关键时刻竟然直接写“以下请看光盘上XX视频”,我去,我要看视频就能学会我还买书干屁?

所以我在书店待了一个半小时之后果断回来了,然后决定把我这个博客的界面改进一下,总感觉以前那个界面太屌丝了,完全没跟上扁平化的潮流,话不多说,开工。

改造界面的过程总体来说比较无聊,而且基本上和之前相比就是重复造一个好看的轮子的过程,总之呢,相当于又是熟悉了一下Javascript基本语法+CSS基本属性。

不过CSS里居然不能对元素背景图片进行调整,真是怨念,遇到大小不行的只能改尺寸。。。

以前我总是很蛋疼CSSdiv添加滚动条的问题,比如以前我用highlightjs处理博文中的代码段,如果长度过长,代码会直接跑到div的范围外,很难看。google了一下,原来解决方法如此简单,在父元素上加上如下的语句:

overflow: auto;

这样,不论在哪个方向出现子元素内容过宽或过高,父元素都会自动出现滚动条,嗯,妈妈再也不用担心我的内容越界了~~

还有,今天用CSS还有一个意外收获,就是如果在一些元素上加上颜色合适的边框,会有意想不到的效果,比如左下角的那几个链接,之所有会有这样立体的效果,主要是因为下面这两条语句:

background: #bbbbbb;
border-bottom: 3px solid #999999;

Javascript里打开一个地址的语句是:

location.href = '/posts'  

其他的都是修饰修饰边角的小过程了,目前来看,效果还是很不错的,其实我一开始是准备把整个页面左侧的内容变换都用Javascript来实现的,不过太麻烦了,还是做成地址跳转了,嗯,以后有时间再弄吧。

当然,今天免不了还是上HOJ刷了一道水题,其实就是对数字的各位进行求和,若和不止一位,接续求和,用一个递归很轻松就能做出来。

这个题最恶心的地方在于,题目给的数字会很大,大到绝对能超过int上限,甚至超过long long,所以,必须要用字符串来存储,不过求和一次之后,后面就简单了,一直递归下去,字符串长度为1时输出即可。

代码如下:

//HOJ 1080
#include <iostream>
#include <cstring>
#include <string>
using namespace std;

void cal(char d[], int l){
    if(l == 1){
        cout << d[0] << endl;
        return;
    }else{
        int sum = 0, tmp, length = 0;
        char res[6];
        for(int i = 0; i < l; i++)
            sum += ((int)d[i]) - 48;
        //cout << sum << endl;
        tmp = sum;
        while(tmp != 0){
            length++;
            tmp /= 10;
        }
        for(int i = length - 1; i >= 0; i--){
            tmp = sum;
            for(int j = 0; j < i; j++)
                tmp /= 10;
            res[i] = (char)(tmp % 10 + 48);
        }
        cal(res, length);
    }
}

int main(){
    char data[50000];
    while(cin >> data){
        if(!strcmp(data, "0"))
            break;
        else
            cal(data, strlen(data));
    }
}