求助月赛T1,样例过了,但是却是0分
  • 板块学术版
  • 楼主thomas_zjl
  • 当前回复4
  • 已保存回复4
  • 发布时间2020/11/28 21:49
  • 上次更新2023/11/5 07:08:31
查看原帖
求助月赛T1,样例过了,但是却是0分
162084
thomas_zjl楼主2020/11/28 21:49

题目地址

代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	char a[7];
	char b[7];
	int c[3];
	cin>>b;
	a[0]=b[1];
	a[1]=b[2];
   	int m=16;
    int f=0;
    for(int i=0;i<strlen(a);i++)
    {
        f*=m;
        if (a[i]=='A'||a[i]=='B'||a[i]=='C'||a[i]=='D'||a[i]=='E'||a[i]=='F')
        {
            f+=(a[i]-'A'+10);
    	}
        else
        {
            f+=(a[i]-'0');
		}
    }
    c[1]=f;
    a[0]=b[3];
	a[1]=b[4];
	f=0;
    for(int i=0;i<strlen(a);i++)
    {
        f*=m;
        if (a[i]=='A'||a[i]=='B'||a[i]=='C'||a[i]=='D'||a[i]=='E'||a[i]=='F')
        {
            f+=(a[i]-'A'+10);
    	}
        else
        {
            f+=(a[i]-'0');
		}
    }
    c[2]=f;
	a[0]=b[5];
	a[1]=b[6];
	f=0;
	for(int i=0;i<strlen(a);i++)
    {
        f*=m;
        if (a[i]=='A'||a[i]=='B'||a[i]=='C'||a[i]=='D'||a[i]=='E'||a[i]=='F')
        {
            f+=(a[i]-'A'+10);
    	}
        else
        {
            f+=(a[i]-'0');
		}
    }
    c[3]=f;
    c[1]=255-c[1];
	c[2]=255-c[2];
	c[3]=255-c[3];
	char d[6];
	cout<<'#';
	int x=0;
	if(c[1]==0)
	{
		d[0]='0';
		d[1]='0';
		x=2;
	}
	else
	{
		while(c[1]!=0)
		{
			d[x]=(c[1]%16)+'0';
			c[1]=c[1]/16;
			if(d[x]>'9')
			{
				d[x]='A'+(d[x]-'0'-10);
			}
			x++;
		} 
	}
	swap(d[0],d[1]); 
	if(c[2]==0)
	{
		d[2]='0';
		d[3]='0';
		x=4;
	}
	else
	{
		while(c[2]!=0)
		{
			d[x]=(c[2]%16)+'0';
			c[2]=c[2]/16;
			if(d[x]>'9')
			{
				d[x]='A'+(d[x]-'0'-10);
			}
			x++;
		} 
	}
	swap(d[2],d[3]); 
	if(c[3]==0)
	{
		d[4]='0';
		d[5]='0';
	}
	else
	{
		while(c[3]!=0)
		{
			d[x]=(c[3]%16)+'0';
			c[3]=c[3]/16;
			if(d[x]>'9')
			{
				d[x]='A'+(d[x]-'0'-10);
			}
			x++;
		} 
	}
	swap(d[4],d[5]);
	cout<<d; 
	return 0;
}

主要思路是16进制转10进制,进行反转之后再转回16进制输出。

2020/11/28 21:49
加载中...