杭电acm1720

本文提供了一种解决HDU 1720编程题的方法,通过手动处理十六进制字符串的加法运算,避免了直接使用内置函数可能遇到的问题。同时,分享了一段简洁的代码,利用C语言标准输入输出库函数实现十六进制数的读取和加法,展示了高效的解题思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://acm.hdu.edu.cn/showproblem.php?pid=1720

wa看不出哪里错了

#include<stdio.h>
#include<string.h>
int main()
{
    int a[1000],b[1000],sum[1010],i,j,len,s,k,l;
    char sa[1000],sb[1000];
    while(scanf("%s %s",sa,sb)!=EOF)
    {
       
       for(i=0;i<1000;i++)
       sum[i]=0;
       for(i=strlen(sa);i>=0;i--)
       {
          if(sa[i]>='a')
          a[i]=sa[i]-'a'+10;
          else if(sa[i]>='A')
          a[i]=sa[i]-'A'+10;
          else a[i]=sa[i]-'0';
       }
       for(i=strlen(sb);i>=0;i--)
       {
          if(sb[i]>='a')
          b[i]=sb[i]-'a'+10;
          else if(sb[i]>='A')
          b[i]=sb[i]-'A'+10;
          else b[i]=sb[i]-'0';
       }
       i=j=k=0;
       while(i<strlen(sa)||j<strlen(sb))
       {
          if(i==strlen(sa))
          sum[k]=b[j++];
          else if(j==strlen(sb))
          sum[k]=a[i++];
          else sum[k]=a[i++]+b[j++];
          k++;
       } 
       if(strlen(sa)>strlen(sb))
       l=strlen(sa)-1;
       else l=strlen(sb);
       for(i=0;i<l;i++)
       if(sum[i]>15)
       {
          sum[i+1]++;
          sum[i]-=16;
       }
       while(sum[l]>15)
       {
         sum[l+1]++;
          sum[l]-=16;
          l++;
       }
       s=sum[l];
       while(l--)
          s=s*16+sum[l];
       printf("%d\n",s);
    }
    return 0;
}
View Code

超简单代码,原来可以直接输入

#include <stdio.h>

int main()
{
    int a,b;

    while(scanf("%x%x",&a,&b)!=EOF)
    {
        printf("%d\n",a+b);
    }

    return 0;
}
View Code

 

转载于:https://www.cnblogs.com/huzhenbo113/archive/2013/05/29/3105949.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值