$$\huge\color{blue}{进制转换\space|\space scanf冷知识运用}$$
本题解为第一篇,接卸来还会有第二篇的,不要急!
$scanf$冷知识
众所周知,在$scanf$中的第一个参数中填入%x
可以输入十六进制的数字。所以这道题目已经解决了。
持续输入写法
换了一种写法,其实~
的作用就是判断有没有输入,如果有的话就会继续运行,反之,则停止。
while(~scanf("%x",&x))//scanf自带16进制数字输入输出
printf("%d\n",x);//十进制输出即可
$scanf$特解
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
typedef long double ld;//较高精度的浮点数
typedef pair<int,int> PII;
typedef pair<string,int> PSI;
int x;
int main ()
{
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
while(~scanf("%x",&x))//scanf自带16进制数字输入输出
printf("%d\n",x);//十进制输出即可
return 0;
}
时空展现
时间:$10ms$。空间:$220KB$。
x的类型换成long long就不可以了,这是为什么?
因为输出的是
int
类型…我当然输出用的lld啊
可能是十六进制的问题,这个我不太清楚
同问.. 请问解决了吗
可能是什么神奇的机制吧,我也没有搞懂(恼怒悲)