加载中…
个人资料
柳陌
柳陌
  • 博客等级:
  • 博客积分:0
  • 博客访问:43,885
  • 关注人气:27
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

zoj3542 2011大连区域赛现场D题 字符串模拟

(2011-10-02 20:42:55)
标签:

杂谈

分类: 积土成山之其他

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4497

2011大连区域现场赛D题  是全场最水的吧,只是字符串的处理还不是很熟悉,用cin.eof()判断文件结束,用cin.getline(str, maxn);来读入一行字符。

别的都是简单的模拟了。

 

 

 

 

#include<cstdio>

#include<cstdlib>

#include<cstring>

#include<cmath>

#include<iostream>

#include<algorithm>

using namespace std;

const int maxn=4500;

 

char str[maxn];

char cnt[5];

 

void change(char ch)

{

    int tmp=ch;

    int a=tmp/16;

    int b=tmp;

    printf("%c", a<=9?(a+'0'):(a-10+'a'));

    printf("%c", b<=9?(b+'0'):(b-10+'a'));

}

char turn(char ch)

{

    if(!isalpha(ch))return ch;

    if(isupper(ch))return tolower(ch);

    return toupper(ch);

}

void cntadd()

{

    if(cnt[2]=='f')

    {

        cnt[2]='0';

        if(cnt[1]=='f')

        {

            cnt[1]='0';

            if(cnt[0]=='9')cnt[0]='a';

            else cnt[0]++;

        }

        else

        {

            if(cnt[1]=='9')cnt[1]='a';

            else cnt[1]++;

        }

    }

    else

    {

        if(cnt[2]=='9')cnt[2]='a';

        else cnt[2]++;

    }

}

 

int main()

{

    //freopen("in.txt", "r", stdin);

    int i, j, len;

    char ch;

    while(!cin.eof())

    {

        cin.getline(str, maxn);

        for(i=0; i<4; i++)cnt[i]='0';

        cnt[4]='\0';

        len=strlen(str);

        for(i=0; i<len; i+=16)

        {

            printf("%s: ", cnt);

            for(j=i; j<len&&j<i+16; j++)

            {

                change(str[j]);

                if(j%2==1)printf(" ");

            }

            if(j==len&&j<i+16)

            {

                for(; j<i+16; j++)

                {

                    printf("  ");

                    if(j%2==1)printf(" ");

                }

            }

            for(j=i; j<len&&j<i+16; j++)

                printf("%c", turn(str[j]));

            printf("\n");

            cntadd();

        }

    }

    return 0;

}

 

 

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有