hdu1720

来源:互联网 发布:js数组对象转json 编辑:程序博客网 时间:2024/06/05 11:40

题目来源:http://acm.hdu.edu.cn/diy/contest_showproblem.php?pid=1010&cid=31373&problem=Problem%20%20J

解法或类型:循环结构。

Description

Many classmates said to me that A+B is must needs.
If you can’t AC this problem, you would invite me for night meal. ^_^

Input

Input may contain multiple test cases. Each case contains A and B inone line.
A, B are hexadecimal number.
Input terminates by EOF.

Output

Output A+B in decimal number in one line.   

Sample Input

1 9

A B

a b

Sample Output

10

21

21

题意描述
      给两个十六进制的数计算它们的十进制之和。
解题思路
      先分别把两个十六进制的数转化为十进制的数,然后计算二者之和。
 
时空分析: 

  

程序代码:

#include<stdio.h>

#include<string.h>

#include<math.h>

intmain()

{

       char a[1000],b[1000];

       int i,c,d,sum1,sum2,l1,l2;

       while(scanf("%s%s",a,b)!=EOF)

       {

              l1=strlen(a);

              l2=strlen(b);

              c=0;

              sum1=0;

              for(i=0;i<l1;i++)

              {

                     if(a[i]>='0'&&a[i]<='9')

                     {

                            c=(a[i]-'0')*pow(16,l1-1-i);

                            sum1+=c;

                     }

                     if(a[i]>='a'&&a[i]<='f')

                     {

                            c=(a[i]-87)*pow(16,l1-1-i);

                            sum1+=c;

                     }

                     if(a[i]>='A'&&a[i]<='F')

                     {

                            c=(a[i]-55)*pow(16,l1-1-i);

                            sum1+=c;

                     }

              }

              d=0;

              sum2=0;

              for(i=0;i<l2;i++)

              {

                     if(b[i]>='0'&&b[i]<='9')

                     {

                            d=(b[i]-'0')*pow(16,l2-1-i);

                            sum2+=d;

                     }

                     if(b[i]>='a'&&b[i]<='f')

                     {

                            d=(b[i]-87)*pow(16,l2-1-i);

                            sum2+=d;

                     }

                     if(b[i]>='A'&&b[i]<='F')

                     {

                            d=(b[i]-55)*pow(16,l2-1-i);

                            sum2+=d;

                     }

              }

              printf("%d\n",sum1+sum2);

       }

      

       return 0;

}

错误分析:

 1、

2、

3、

0 0
原创粉丝点击