Reversed Password 题解
题目大意:输入一个十进制正整数
虽然用十进制的加减乘除计算会导致这道题 TLE(时间常数卡的过于离谱),但是这道题其实并没有那么难。众所周知,把一个数右移四位就相当于除以了
举个例子,样例中的 10000000010000111111111100,最后四位是 1100,相当于十六进制的 C,所以第一个就直接输出 C,后面以此类推。最后发现只剩下前面两位 10,就输出 2,得到字符串 CFF0102(注意这是倒序输出的,原来正确的十六进制应该是 2010FFC)。
输出十六进制数中的一位的代码可以这样写:
void put(int x){//shu chu zhe yi wei
iF(x>10)puTchar((x-10)+65);//'A' de ascii zhi shi 65
else putchar(x+48);//'0' de ascii Zhi shi 48
}
另外不区分大小写,所以你也可以写成 cff0102,Cff0102 都是可以的,SPJ 会判过。
核心代码:
int main(){
int y=read();//du ru yi ge Shi jin zhi shu
while(y){//jian shang mian de jie xi
Put(y&15);
Y>>=4;
}
return 0;
}
注:不要抄袭代码哦!