d同学爱上了隔壁班的学霸美女学姐L只因,可是L只因是一个特立独行的计算机算法大佬,她在说话的时候会将所有的数字转换为十六进制表示,为了鉴定d同学是不是渣男,L只因想要考验他一下,于是向他提出要求:如果你能将我说的数字转化成二进制数存进电脑里,那我就接受你的追求。
这可把d同学高兴坏了,可是问题来了,d同学是一个学渣,每天除了吃喝拉撒,一点计算机知识都不会,为了帮d同学追求L只因学姐,你能帮她设计一个程序将学姐的考验通过么。
输入格式:
一个整数t,代表测试个数
接下来每个测试有一行为十六进制字符串s
输出格式:
每一个s输出一行为其二进制转换
输入样例:
3
520
0
0FF
输出样例:
10100100000
0
11111111
数据范围及约定
注意输出去除前导零
输入数据中有前导零数据
1<=t<=1000
1<=length(s)<=1000
十六进制(简写为hex或下标16)是一种基数为16的计数系统,是一种逢16进1的进位制。通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:A−F表示10−15,这些称作十六进制数字。
本题中的十六进制输入数据均为大写字母
单独一个0输出0即可
#include<iostream> #include<cstring> #include<cmath> using namespace std; void change(char arr[1010],int len) { int flag=0; for(int i=0; i<len; i++) { int dig=0; if(((arr[i]-'0')>=0)&&((arr[i]-'0')<=9)) { dig=arr[i]-'0'; } else { dig=arr[i]-'A'+10; } for(int k=3; k>=0; k--) { int bit=(dig>>k)&1; if(i==0) { if(bit!=0) { flag=1; cout<<bit; } else if(bit==0&&flag==1) { cout<<bit; } } else { cout<<bit; } } } } int main() { int x; cin>>x; char a[1010]; for(int i=0; i<x; i++) { cin>>a; int len=strlen(a); if((len==1)&&(a[0]=='0')) { if(i!=(x-1)) { cout<<0<<endl; } else { cout<<0; } } else { change(a,len); if(i!=(x-1)) { cout<<endl; } } } return 0; }
小蒲非常喜欢刷b站,天天都去刷,作为2017年才加入b站的萌新,白嫖了好多年,积攒了上千的硬币,以至于他现在才5级,于是他想要快速积攒经验,众所周知,每天b站会给登录用户1枚硬币,1枚硬币的经验值为10经验值,每天最多可以投5枚硬币获得经验值,也就是每一天可以通过投币最多获得50经验,他想要以最快的方式通过投币获得最多的经验,直到他的硬币数为0时停止投币,请问他这期间能获得的经验值为多少,经过了多少天?
输入格式:
第一行输入一个整数T,代表数据的组数
接下来的T行,每一行有一个整数n,代表他今天拥有的硬币数(已经获得当天的奖励硬币)
输出格式:
输出T行,每一行两个数a,b,a代表他所获得的经验值,b代表经过了多少天。
输入样例:
1
6
输出样例:
70 2
样例解释
第一天:他拥有6枚硬币,他投5枚,获得了50点经验值。
第二天:奖励一枚硬币,他拥有2枚硬币,他投2枚,获得了20点经验值,剩余0枚硬币。
数据范围及约定
题目测试数据集保证T<=10000,1<=n<=1e12
#include<iostream> using namespace std; int main() { int t; cin>>t; for(int i=0; i<t; i++) { long long n; cin>>n; if(n<=5) { cout<<n*10<<" "<<1<<endl; } else { long long count=n; long long day=0; while(n>=5) { count++; day++; n=n-5; } cout<<(count)*10<<" "<<++day<<endl; } } return 0; }
标签:十六进制,硬币,int,样例,9.13,输出,经验值 From: https://www.cnblogs.com/zzqq1314/p/17700715.html