`

bupt boj 第二题

    博客分类:
  • acm
acm 
阅读更多
/************************************************************************* > File Name: 2.c > Author:narutolby 
	> Created Time: 2013年01月02日 星期三 14时34分25秒
 ************************************************************************/

#include<stdio.h>
#define MAX_SIZE 102 
int main1(){
  int a = '0';
  printf("%d\n",a);
  return 0;
}
int main(){
  char a[MAX_SIZE],b[MAX_SIZE],c[MAX_SIZE+1];
  int i;
  for(i=0;i<=MAX_SIZE;i++){
    c[i] = '0';
  }
  int a_len,b_len; 
  void sub(char*a,char*b,char*c,int a_len,int b_len);
  void plus(char*a,char*b,char operation,char*c,int a_len,int b_len);
  scanf("%s %s",a,b);
  for(a_len=0;a[a_len]!='\0';a_len++);
  for(b_len=0;b[b_len]!='\0';b_len++);
  if(a[0]=='-'&& b[0]!='-') {
    plus(a+1,b,'-',c,a_len-1,b_len);
  }else if(a[0]=='-' && b[0]=='-'){
    sub(b+1,a+1,c,b_len-1,a_len-1);
  }else if(a[0]!='-' && b[0]!='-'){
    sub(a,b,c,a_len,b_len);
  }else if(a[0]!='-' && b[0]=='-'){
    plus(a,b+1,'+',c,a_len,b_len-1);
  }
	  return 1;
}
int max(int a,int b){
 if(a>=b){
   return a;
 }else{
   return b;
 }
} 
void mainSub(char*a,char*b,char*c,int a_len,int b_len,char operation){
   int i=a_len-1,j=b_len-1,k=a_len-1;
   *(c+k+1)= '\0';
   while(j>=0){
    int va = *(a+i)-48;
    int vb = *(b+j)-48;
	int vc = va - vb;
	int temp = 1;
	if(vc<0){
      while(*(a+i-temp)=='0'){
		*(a+i-temp) = '9';
        temp++;
	  }
		*(a+i-temp)=*(a+i-temp)- 1;
		vc +=10;
	}
    *(c+k)=vc+48; 
	j--;i--;k--;
   }
   while(i>=0){
    *(c+k)=*(a+k); 
	i--;k--;
   }
  if(operation=='-'){
	  putchar('-');
  }
  while(*(c+k+1)!='\0'){
    if(*(c+k+1)!='0'){
		break;
	}
	k++;
  }
     printf("%s",c+k+1);
  putchar('\n');
}
void sub(char*a,char*b,char*c,int a_len,int b_len){
   if(a_len>b_len){
      mainSub(a,b,c,a_len,b_len,'+');
   }else if(a_len<b_len){
      mainSub(b,a,c,b_len,a_len,'-');
   }else{
     int i;
	 for(i=0;i<a_len;i++){
       if(a[i]==b[i]){
	      continue;
	   }else if(a[i]>b[i]){
		   mainSub(a,b,c,a_len,b_len,'+');
		   break;
	   }else{
		   mainSub(b,a,c,b_len,a_len,'-');
		   break;
	   }
	 }
	 if(i==a_len)
	   printf("%c\n",'0');
   }
}
void plus(char*a,char*b,char operation,char*c,int a_len,int b_len){
  int c_len = max(a_len,b_len)+2;
  *(c+c_len) = '\0';
  int i=a_len-1,j=b_len-1,k=c_len-1; 
  while(i>=0 && j>=0){
   int va = *(a+i)-48;
   int vb = *(b+j)-48;
   int vc = *(c+k)-48;
   int sum = va + vb + vc;
   int temp = 0;
   while(sum>0){
	 *(c+k-temp)=sum % 10+48; 
	 sum = sum / 10;
     temp++; 
   }
   i--;j--;k--;
  }
  while(i>=0){
	  int va = *(a+i)-48;
	  int vc = *(c+k)-48;
	  int sum = va + vc;
	  *(c+k) =sum + 48; 
	  i--;k--;
  }
  while(j>=0){
	  int vb = *(b+j)-48;
	  int vc = *(c+k)-48;
	  int sum = vb + vc;
	  *(c+k) =sum + 48; 
	  j--;k--;
  }

  if(operation=='-'){
	  putchar('-');
  }
	  printf("%s\n",*(c+k)!='0'?(c+k):(c+k+1));
  
}
分享到:
评论

相关推荐

    BUPT实验室安全试题&答案

    实验室安全试题&答案 北邮 题目有重复的

    BUPT信号与系统2006真题

    《BUPT信号与系统2006真题》是一份重要的教育资源,对于准备北京邮电大学(BUPT)考研的学生来说,无疑是宝贵的复习材料。"信号与系统"是电子工程、通信工程、自动化等专业的重要课程,它涵盖了信号的基本概念、系统...

    BUPT信安数字内容安全期末试题

    BUPT信安数字内容安全期末试题

    2010-2011软工期中试题_有答案(BUpt)

    本资源为北京邮电大学 2010-2011 学年第二学期《软件工程》期中考试试题,涵盖了软件工程的多个方面,包括软件危机、软件生命周期模型、面向对象设计、UML 建模、需求分析、体系结构设计等。 试题共分为四部分,...

    [BUPT]计算导论OJ上机题参考源代码 + 可执行文件整合资源包(计算机学院 - 大一上).zip

    总结来说,"BUPT计算导论OJ上机题参考源代码 + 可执行文件整合资源包”是计算机学院大一新生宝贵的教育资源,它涵盖了C语言基础、算法设计与分析、编程实践等多个方面,对于初学者的成长至关重要。通过对这些资料的...

    BUPT离散数学作业以及ppt讲义以及课堂习题

    这个压缩包包含了BUPT(北京邮电大学)学生在学习离散数学时的作业、课堂讲义、习题解答以及考试试卷,提供了全面的学习资源。 1. **集合论**:集合论是离散数学的基础,主要研究集合的性质和操作。文件可能包括了...

    BUPT NoSQL数据库

    在第二章中,你可能会学习到图数据库的基本概念,例如如何定义节点、边和属性,以及如何使用图遍历算法进行查询。图数据库的代表有Neo4j和JanusGraph等,它们在实际应用中展现出强大的查询性能和灵活性。 接着是...

    北邮机试往年试题汇总 | 北邮复试 | BUPT OJ

    北邮机试往年试题汇总是北邮BUPT OJ平台上的一个题库,收录了从2010年到2014年的所有机试往年题。该题库的内容涵盖了计算机科学和技术的多个领域,包括算法、数据结构、计算机网络、操作系统、数据库等。 算法方面...

    BUPT《工程数学》期末试题

    2013——2014 学年第二学期 《工程数学》期末考试试题(B 卷) 2015——2016 学年第二学期 《工程数学》期末考试试题(B 卷) 2016——2017 学年第一学期 《工程数学》补考试题 2020——2021 学年第一学期《工程数学...

    bupt形式语言与自动机作业答案

    本资源为BUPT形式语言与自动机作业答案,包括第二章到第三章的习题答案。第二章习题答案包括找出右线性文法、构造上下文无关文法和找出由下列各组生成式产生的语言等。第三章习题答案包括确定集合是否为正则集、找出...

    BUPT计算机大三Linux实验1-4

    4. "第2章 文本文件处理v5.pptx" 可能会涉及文本编辑器(如vi/vim或nano)、查找和过滤工具(grep、sed、awk等),这些都是Linux系统中处理文本文件的常用技能。 5. "第3章 文件系统管理v7.pptx" 可能会深入讲解...

    BUPT 打铃器 原音乐

    【标题】"BUPT打铃器 原音乐"指的是北京邮电大学(BUPT)特有的上下课铃声,这个软件或应用旨在帮助学生在家中模拟校园的学习环境。这款打铃器提供了原汁原味的BUPT铃声,让学生即使在远程学习期间也能感受到熟悉的...

    BUPT数据库实验大三

    在这个阶段,学生将学习如何使用ER图来表示现实世界中的实体及其关系,并转化为关系表,同时理解第一范式(1NF)、第二范式(2NF)和第三范式(3NF)的概念,确保数据库设计的规范性和效率。 实验二:重点在于SQL...

    BUPT计算机学院大雾,期末试卷,ppt

    2. 编程语言:C/C++、Java、Python等的语法、编程思想及应用实例。 3. 网络技术:TCP/IP协议、网络拓扑、网络安全、HTTP协议等。 4. 数据库管理:SQL语句、数据库设计、事务处理、索引优化等。 5. 计算机网络:网络...

    2023bupt大创遥感语义分割.rar

    2023bupt大创遥感语义分割.rar2023bupt大创遥感语义分割.rar2023bupt大创遥感语义分割.rar2023bupt大创遥感语义分割.rar2023bupt大创遥感语义分割.rar2023bupt大创遥感语义分割.rar2023bupt大创遥感语义分割.rar2023...

    BUPT软件工程分布式温控系统

    2. **PyQT5**:PyQT5是Python的一个模块,提供了创建桌面应用程序的工具包。它允许开发者使用Qt设计框架来构建美观、功能丰富的用户界面。在分布式温控系统中,PyQT5可能被用来设计和实现监控和配置界面,使用户能够...

    BUPT大二下,计网课程设计,DNS服务器实验.zip

    在本实验中,我们主要关注的是“BUPT大二下,计网课程设计,DNS服务器实验”。这个项目涉及到了计算机网络中的一个重要组件——域名系统(DNS),以及与之相关的编程技术,如C++。DNS是互联网上的一个关键服务,它...

    BUPT《电子电路基础》2020春期末试题

    2. **静态工作点**:理解三极管的放大条件,如何设置合适的静态工作点以避免饱和和截止。 3. **频率响应**:交流电路中的谐振现象,Q值的概念,以及低通、高通、带通和带阻滤波器的设计。 4. **负反馈**:负反馈对...

    BUPT《概率论与数理统计》期末试题

    2018———2019学年第二学期《概率论与数理统计》期末考试试题 2018———2019学年第二学期《概率论与数理统计》期末考试试题及答案 2019———2020学年第二学期《概率论与数理统计》期末考试试题 2019———2020...

    BUPT计算机系统csapp四次实验报告

    第二次实验:内存管理与虚拟地址 在这一阶段,学生可能接触到了内存管理的概念,如页表、页替换算法(如LRU)和内存分段。通过模拟内存分配和回收,理解了物理内存与虚拟地址之间的映射关系,以及内存保护的重要性。...

Global site tag (gtag.js) - Google Analytics