nyoj 844 A+B Problem(V)

来源:互联网 发布:西澳大学 知乎 编辑:程序博客网 时间:2024/05/22 15:54

A+B Problem(V)

时间限制:1000 ms  |            内存限制:65535 KB
难度:1
描述
做了A+B Problem之后,Yougth感觉太简单了,于是他想让你求出两个数反转后相加的值。帮帮他吧
输入
有多组测试数据。每组包括两个数m和n,数据保证int范围,当m和n同时为0是表示输入结束。
输出
输出反转后相加的结果。
样例输入
1234 1234125 1170 0
样例输出
86421232
看一道题看了好久就是没思路...烦死了。               随机选了一题,附上两种代码:                                                                                                                                                                                   常规思路不用字符串:
#include<stdio.h>int f(int n){    int i;    int sum=0;    while(n)    {        i=n%10;        sum=sum*10+i;        n/=10;    }    return sum;}int main(){    int a,b;    while(scanf("%d %d",&a,&b)&&(a!=0||b!=0))    {        printf("%d\n",f(a)+f(b));    }    return 0;}

字符串:
#include<stdio.h>#include<string.h>int main(){    int n,m,i,j,l1,l2;    char a[20],b[20];    int a1[20],b1[20];    while(scanf("%s %s",a,b)&&(a[0]!='0'||b[0]!='0'))    {        l1=strlen(a);        l2=strlen(b);        memset(a1,0,sizeof(a1));        memset(b1,0,sizeof(b1));        for(i=0,j=0;i<l1;i++,j++)        {            a1[j]=a[i]-'0';        }        for(i=0,j=0;i<l2;i++,j++)        {            b1[j]=b[i]-'0';        }        for(i=0;i<20;i++)        {            a1[i]+=b1[i];            if(a1[i]>=10)            {                a1[i]-=10;                a1[i+1]++;            }        }        for(i=20-1;i>=0;i--)        {            if(a1[i]!=0)            break;        }        for(;i>=0;i--)        {            printf("%d",a1[i]);        }        printf("\n");    }    return 0;}

0 0
原创粉丝点击