十进制 | 十六进制 | |
A | 65 | 41 |
a | 97 | 61 |
0 | 48 | 30 |
\n | 10 | 0A |
给你一段ASCII编码的文字,输出其每个字符的ASCII码。
一段文字,由ASCII码字符组成。
先输出行号,行号为16进制,占5位,从0开始计数,行号前导为0,然后空一格。 每行最多输出32个字符的ASCII码,每个ASCII码为16进制,占2位,前导为0,中间用空格隔开。 所有16进制使用大写A~F表示10~15。最后一行行末无空格,无换行。
ACM International Collegiate Programming Contest, I LOVE YOU Lotus is a mystic symbol.
00000 41 43 4D 20 49 6E 74 65 72 6E 61 74 69 6F 6E 61 00001 6C 20 43 6F 6C 6C 65 67 69 61 74 65 20 50 72 6F 00002 67 72 61 6D 6D 69 6E 67 20 43 6F 6E 74 65 73 74 00003 2C 0A 49 20 4C 4F 56 45 20 59 4F 55 0A 4C 6F 74 00004 75 73 20 69 73 20 61 20 6D 79 73 74 69 63 20 73 00005 79 6D 62 6F 6C 2E 20 0A |
||
代码如下:
#include
using namespace std;
#define MAX 1000
typedef char SString[MAX];
int main()
{
int colum=0;
int k=0;
SString str;
SString str_rec;
int flag=0;
while(gets(str_rec))
{
int length_rec=strlen(str_rec);
for(int i=0; i0) printf("\n");
printf("%05X ",colum);//按格式输出
colum++;
k=0;
}
if(i==flag-1||k==15) printf("%02X",str[i]);按格式输出
else printf("%02X ",str[i]);
k++;
}
Description |
||
题目描述Eason是个非常迷信的人,他喜欢数字3和6,不喜欢4和7。 如果一个数字的数码中没有4和7,而有3或者6的话,他就会喜欢这个数字。 比如,他会喜欢13,36,但是不会喜欢14,34。但对于28这种的,他就无所谓喜欢还是不喜欢。 Eason想知道区间[a,b]中一共有多少个他喜欢和不喜欢的数字? 输入每行输入一个样例,为a和b,0≤a≤b≤106。如果a和b都为0,那么输入结束,这个样例不需要处理。 输出每行输出一个样例的结果,先输出喜欢数字的个数,再输出不喜欢数字的个数。 样例输入1 10 1 100 1 1000000 0 0 样例输出2 2 28 36 215488 737856 |
#include
using namespace std;
#define MAX 1000005
int num_like[MAX];
int num_dislike[MAX];
int num1;
int num2;
bool bool_like[MAX];
bool bool_dislike[MAX];
void i_judege(int i)
{
int t=i;
bool thr_ans,four_ans;
thr_ans=four_ans=false;
int temp;
while(i!=0)
{
temp=i%10;
i=i/10;
if(temp==3||temp==6) thr_ans=true;
if(temp==4||temp==7) four_ans=true;
}//变量的命名和变量值的改变,gcd算法的易错地方
if(thr_ans&&!four_ans)
{
num1++;
bool_like[t]=true;
}
if(four_ans)
{
num2++;
bool_dislike[t]=true;
}
}
int main()
{
int a,b;
num1=num2=0;
num_like[0]=num_dislike[0]=0;//忽略了这个样例
num_like[1]=num_dislike[1]=0;
memset(bool_like,false,sizeof(bool_like));
memset(bool_dislike,false,sizeof(bool_dislike));
for(int i=2; i<=1000000; i++)
{
i_judege(i);
num_like[i]=num1;
num_dislike[i]=num2;
}
while(scanf("%d%d",&a,&b),a,b)
{
int temp1;
int temp2;
if(bool_like[a])
{
temp1=num_like[b]-num_like[a]+1;
temp2=num_dislike[b]-num_dislike[a];
}
if(bool_dislike[a])
{
temp1=num_like[b]-num_like[a];
temp2=num_dislike[b]-num_dislike[a]+1;
}
if(!bool_like[a]&&!bool_dislike[a])
{
temp1=num_like[b]-num_like[a];
temp2=num_dislike[b]-num_dislike[a];
}
printf("%d %d\n",temp1,temp2);
}
return 0;
}
3.1169-XTUOJ
给你一个数列a1,a2,...,an,求m个连续数字组成的子段和最大值。
有多个样例,每个样例的第一行是两个整数n和m,(1≤m≤n;≤100,000)。如果n和m为0表示输入结束,这个样例不需要处理。第二行是n个整数ai,0≤ai≤10000。
每行输出一个整数,即样例的结果。
6 3 1 2 3 4 5 6 6 3 1 2 3 3 2 1 0 0
15 8
#include
using namespace std;
#define MAX 100005
int num[MAX];
int main()
{
int m,n;
while((scanf("%d%d",&n,&m),n,m))
{
int result=0,ans=0;
for(int i=0;i