• XTU-OJ 1215-A+B V


    题目描述

    小明很喜欢做a+b,他但经常忘记进位,所以他算88+12=90,而不是100。 现在你给了小明一些a+b的算式,请问他算出来会是什么?

    输入

    第一行是一个整数K,表示样例的个数。 每个样例占一行,为两个整数a,b,0≤a,b≤1e9。

    输出

    每行输出一个样例的结果,不要输出前导0。

    样例输入
    3
    1 2
    5 6
    55 55
    
    
    样例输出
    3
    1
    0

    解题思路:模拟手算加法,个位和个位对齐,十位和十位对齐......;先算“突出”来那一部分的,然后算需要 两两相加 的部分,这时就把 相加和 模10(取消进位),两步完成,直接交题。

    AC代码:

    1、字符串类型输入

    1. #include
    2. #include
    3. int K,a,b,flag,i,j;
    4. int lenA,lenB,len,ans;
    5. char strA[12],strB[12];
    6. int main()
    7. {
    8. scanf("%d",&K);
    9. while ( K --)
    10. {
    11. ans = 0;
    12. scanf("%s %s",strA,strB);
    13. lenA = strlen(strA), lenB = strlen(strB);
    14. flag = 1, len = lenB-lenA; //默认数字 b>a
    15. if (lenA > lenB) {flag = 0, len = lenA-lenB;} //不然 令flag=0
    16. if (flag) // b>a的情况
    17. {
    18. for (i = 0; i < len; i ++)
    19. ans = ans*10 + (strB[i]-'0');
    20. for (j = 0; j < lenA; j ++,i ++)
    21. ans = ans*10 + ((strB[i]-'0') + (strA[j]-'0'))%10;
    22. }
    23. else // a>b的情况
    24. {
    25. for (i = 0; i < len; i ++)
    26. ans = ans*10 + (strA[i]-'0');
    27. for (j = 0; j < lenB; j ++,i ++)
    28. ans = ans*10 + ((strA[i]-'0') + (strB[j]-'0'))%10;
    29. }
    30. printf("%d\n",ans);
    31. }
    32. }

    2、整数类型输入(以前的代码)

    1. #include
    2. int max(int x,int y)
    3. {
    4. if (x < y) x = y;
    5. return x;
    6. }
    7. int main()
    8. {
    9. int K;
    10. int a,b;
    11. scanf("%d",&K);
    12. while ( K --)
    13. {
    14. int a1[15] = {0};
    15. int b1[15] = {0};
    16. int c1[15] = {0};
    17. int aw,bw;
    18. scanf("%d %d",&a,&b);
    19. for (aw = 1; a > 0; aw ++)
    20. {
    21. a1[aw] = a%10;
    22. a /= 10;
    23. // printf("a1[%d] = %d\n",aw,a1[aw]);
    24. }
    25. for (bw = 1; b > 0; bw ++)
    26. {
    27. b1[bw] = b%10;
    28. b /= 10;
    29. // printf("b1[%d] = %d\n",bw,b1[bw]);
    30. }
    31. int m = max(aw,bw);
    32. // printf("m = %d\n",m);
    33. for (int i = 1; i < m; i ++)
    34. {
    35. c1[i] = a1[i] + b1[i];
    36. if (c1[i] > 9) c1[i] -= 10;
    37. // printf("c1[%d] = %d\n",i,c1[i]);
    38. }
    39. int ans = 0;
    40. for (int j = m-1; j >= 1; j --)
    41. {
    42. ans = ans*10 + c1[j];
    43. }
    44. printf("%d\n",ans);
    45. }
    46. return 0;
    47. }

  • 相关阅读:
    Hosmer-Lemeshow检验(HL检验)
    Vue 访问外链失败问题
    pytorch之relu激活函数
    老板也有生命周期
    ffmpeg命令行处理视频,学习记录
    【打工日常】解决docker对镜像pull的很慢的问题
    解决方案 | 法大大电子签助力融资租赁突围数字化
    数位DP 上 day44
    微信小程序的OA会议之首页搭建
    【Java开发】 Spring 08 :访问 Web 资源( 借助 RestTemplate or WebClient )
  • 原文地址:https://blog.csdn.net/Jay_is_Chou/article/details/133926292