刷道水题,hdu1720
最简单的方法如下:
方法一:
#include<stdio.h>
int main()
{
int a,b;
while(scanf("%x%x",&a,&b)!=EOF)
{
printf("%d\n",a+b);
}
return 0;
}
自己做的方法,因为不知道有%x这个玩意,呵呵了
方法二:
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
char A[20000],B[20000];
int i;
char *p;
long long A_d=0,B_d=0;
while(cin>>A>>B)
{
A_d=0,B_d=0;
p=strtok(A,".");
if(p)
{
int len=strlen(p);
double jj=0;
for(i=strlen(p)-1;i>=0;i--)
{
if(*(p+i)>='A'&&*(p+i)<='F'||*(p+i)>='a'&&*(p+i)<='f')
{
if(*(p+i)>='A'&&*(p+i)<='F')
{
A_d=A_d+(int)(*(p+i)-'A'+10)*pow(16.0,jj);
}
else if(*(p+i)>='a'&&*(p+i)<='f')
{
A_d=A_d+(int)(*(p+i)-'a'+10)*pow(16.0,jj);
}
}
else
A_d=A_d+(int)(*(p+i)-'0')*pow(16.0,jj);
jj++;
}
}
p=strtok(B,".");
if(p)
{
int len=strlen(p);
double jj=0;
for(i=strlen(p)-1;i>=0;i--)
{
if(*(p+i)>='A'&&*(p+i)<='F'||*(p+i)>='a'&&*(p+i)<='f')
{
if(*(p+i)>='A'&&*(p+i)<='F')
{
B_d=B_d+(int)(*(p+i)-'A'+10)*pow(16.0,jj);
}
else if(*(p+i)>='a'&&*(p+i)<='f')
{
B_d=B_d+(int)(*(p+i)-'a'+10)*pow(16.0,jj);
}
}
else
B_d=B_d+(int)(*(p+i)-'0')*pow(16.0,jj);
jj++;
}
}
cout<<A_d+B_d<<endl;
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
}
}
两种方法都能够ac,时间上肯定第一个快!