美文网首页
sicily_1000 A-B

sicily_1000 A-B

作者: 我什么都不知道呀 | 来源:发表于2015-10-06 22:40 被阅读128次

题目

编程基础题,就是输入两个数A、B然后获得A-B的结果

代码

简单版

// CopyRight (c) HuangJunjie@SYSU(SNO:13331087). All Rights Reserved.
#include<iostream>
using std::cin;
using std::cout;

int main() {
  int a, b;

  cin >> a >> b;
  cout << a - b << endl;

  return 0;
}

高精度版

// CopyRight (c) HuangJunjie@SYSU(SNO:13331087). All Rights
#include<stdio.h>
#include<string.h>

char* strrev(char* str) {
  char *h = str, *t = str, ch;
  while (*t++) {}
  t -= 2;
  while (h < t) {
    ch = *h;
    *h++ = *t;
    *t-- = ch;
  }
}

void substruct(char *big, char *small, char* result) {
  for (int i = 0; big[i] || small[i]; i++) {
    if (big[i] < small[i]) {
      big[i] += 10;
      big[i + 1]--;
    }
    if (!small[i]) small[i] += '0';
    result[i] = (big[i] - '0') - (small[i] - '0') + '0';
  }
}

void Printf(char *c) {
  int i = 0;
  while (c[i++] == '0') {}
  if (!c[i]) printf("0");
  printf("%s", c + i - 1);
  printf("\n");
}

int main() {
  char a[100 + 1] = { 0 }, b[100 + 1] = { 0 }, c[100 + 1] = { 0 };
  scanf("%s", a);
  scanf("%s", b);
  strrev(a);
  strrev(b);
  if (strlen(a) < strlen(b)) {
    substruct(b, a, c);
    printf("-");
  } else if (strlen(a) > strlen(b)) {
    substruct(a, b, c);
  } else {
    for (int i = strlen(a) - 1; i >= 0; i--) {
      if (a[i] == b[i]) {
        if (i) {
          continue;
        } else {
          c[i] += '0';
        }
      } else if (a[i] > b[i]) {
        substruct(a, b, c);
        break;
      } else if (a[i] < b[i]) {
        substruct(b, a, c);
        printf("-");
        break;
      }
    }
  }
  strrev(c);
  Printf(c);
  return 0;
}

相关文章

  • sicily_1000 A-B

    题目 编程基础题,就是输入两个数A、B然后获得A-B的结果 代码 简单版 高精度版

  • 【Python爬虫作业】测试题

    1. print ('a+b=',a+b) print ('a-b=',a-b) print ('a*b=',a*...

  • return a-b

    return a-b是比较a和b,a比b大的话则把a排在b前面,这样经过若干次比较,就会排序完成。

  • 用正确的方式表达

    假期给儿子检查数学作业,看到一道因式分解题: (a-b)(a-b)-(b-a)= ? 儿子的答案是(b-a)(b...

  • 运算符

    1.算术运算符 a+b - a-b a...

  • L1-011. A-B

    L1-011. A-B 问题描述: java代码: 结果

  • 数组排序和添加

    数组排序// 方法一://sort 排序 sort(function(a,b){return a-b;}) 数组...

  • 2018-04-17

    sin(a+b)=sinAcosB+sinBcosA sin(a-b)=sinAcosB-sinBcosA cos...

  • 编程第三天的日常

    运算符 赋值运算符 = :a=b <--->a=ab;a -= b<--->a=a-b; 算术运算符 +-×/% ...

  • 数组去重并排序

    冒泡排序 方法排序(排降序) 关于a.sort(function(a,b){return a-b})的解释比较详细...

网友评论

      本文标题:sicily_1000 A-B

      本文链接:https://www.haomeiwen.com/subject/vlxncttx.html