2011 ACMアジア予選大会大連駅現場戦D題Hexadecimal View
1731 ワード
テーマリンク:http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=4487
テーマのタイプ:printfを活用した水問題。
説明しない
コード:
テーマのタイプ:printfを活用した水問題。
説明しない
コード:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char str[5005];
char des[24];
char tran(char c)
{
char ch=c;
if ('a'<=c&&c<='z')
{
ch=c-'a'+'A';
}
else if ('A'<=c&&c<='Z')
{
ch=c-'A'+'a';
}
return ch;
}
int main()
{
while (gets(str+1))
{
int a=0;
int len=strlen(str+1);
int lim=len/16;
int mark=len%16;
for (int k=1;k<=lim;k++)// 16
{
printf("%04x: ",a+(k-1)*16);
int j=1;
for (int i=(k-1)*16+1;i<=(k-1)*16+16;i++)
{
printf("%x",str[i]);
if (!(i&1))printf(" ");
des[j++]=tran(str[i]);
if (i%16==0)
{
printf("%s
",des+1);
}
}
}
if (mark==0)continue;
printf("%04x: ",a+lim*16);// ( 16 )
int l=1;
int i;
for (i=lim*16+1;str[i]!='\0';++i)
{
printf("%x",str[i]);
des[l++]=tran(str[i]);
if (!(i&1))printf(" ");
}
des[l]='\0';
for (int j=i;j<=lim*16+16;++j)
{
printf(" ");
if (!(j&1))printf(" ");
}
printf("%s
",des+1);
}
return 0;
}