HDU 4054
6733 ワード
http://acm.hdu.edu.cn/showproblem.php?pid=4054
模擬問題、1つの文字列の各文字に対して16進数の表す数字を出力して、1行ごとに16文字を処理して、後でこの16文字を出力して、大文字と小文字を交換します
%xを利用して直接16進数を出力することができて、簡単に秒を落とすことができます
View Code
模擬問題、1つの文字列の各文字に対して16進数の表す数字を出力して、1行ごとに16文字を処理して、後でこの16文字を出力して、大文字と小文字を交換します
%xを利用して直接16進数を出力することができて、簡単に秒を落とすことができます
#include <iostream>
#include <cstdio>
#include <cstring>
#include <map>
#include <algorithm>
#include <queue>
#include <cmath>
#include <stack>
#include <set>
using namespace std;
char str[6000];
int main(){
while(gets(str)){
int len=strlen(str);
for(int i=0;i<len;i+=16){
printf("%04x:",i);
int odd=1;
int cnt=0;
for(int j=i;j<len && j<i+16;j++){
if(odd&1){
odd=0;
printf(" %x",str[j]);
cnt+=3;
}
else{
odd=1;
printf("%x",str[j]);
cnt+=2;
}
}
for(int j=0;j<41-cnt;j++)
putchar(' ');
for(int j=i;j<len && j<i+16;j++){
if(str[j]>='a' && str[j]<='z'){
printf("%c",str[j]-'a'+'A');
}
else if(str[j]>='A' && str[j]<='Z'){
printf("%c",str[j]-'A'+'a');
}
else{
printf("%c",str[j]);
}
}
putchar('
');
}
}
return 0;
}
View Code