【题目描述】

高精除以高精,求它们的商和余数。

【输入】

输入两个低于300位的正整数。

【输出】

输出商和余数。

【输入样例】

1231312318457577687897987642324567864324567876543245671425346756786867867867
1231312318767141738178325678412414124141425346756786867867867

【输出样例】

999999999748590
179780909068307566598992807564736854549985603543237528310337

【源程序】

#include<iostream>
#include<cstring>
using namespace std;
int a[100],b[100],c[100];
int compare(int a[],int b[])//比较a、b,若a>b为1;若a<b为-1;若a=b为0
{  int i;  if(a[0]>b[0])  return 1;  if(a[0]<b[0])  return -1;  for(i=a[0];i>0;i--)//从高位到低位比较  {  if(a[i]>b[i])  return 1;  if(a[i]<b[i])  return -1;  }  return 0;
}  void subduction(int a[],int b[])//计算a=a-b
{  int flag;  int i;  flag=compare(a,b);  if(flag==0)//相等  {  a[0]=0;  return;  }  if(flag==1)//大于  {  for(i=1;i<=a[0];i++)  {  if(a[i]<b[i])//若不够向上借位  {  a[i+1]--;  a[i]+=10;  }  a[i]-=b[i];  }  while(a[0]>0&&a[a[0]]==0)//删除前导0  a[0]--;  return;  }
}
int main()
{  char str1[100],str2[100];  int i,j;  memset(a,0,sizeof(a));  memset(b,0,sizeof(b));  memset(c,0,sizeof(c));  cin>>str1>>str2;  a[0]=strlen(str1);//a[0]存储串1的位数  b[0]=strlen(str2);//b[0]存储串2的位数  for(i=1;i<=a[0];i++)  a[i]=str1[a[0]-i]-'0';  for(i=1;i<=b[0];i++)  b[i]=str2[b[0]-i]-'0';  int temp[100];  c[0]=a[0]-b[0]+1;  for(i=c[0];i>0;i--)  {  memset(temp,0,sizeof(temp));  for(j=1;j<=b[0];j++)//从i开始的地方,复制数组b到数组temp  temp[j+i-1]=b[j];  temp[0]=b[0]+i-1;  while(compare(a,temp)>=0)//用减法模拟  {  c[i]++;  subduction(a,temp);  }  }  while(c[0]>0&&c[c[0]]==0)//删除前导0  c[0]--;  //    cout<<"商为:";  if(c[0]==0)//输出结果  cout<<0<<endl;  else  {  for(i=c[0];i>0;i--)  cout<<c[i];  cout<<endl;  }  //    cout<<"余数为:";  if(a[0]==0)//输出余数  cout<<0<<endl;  else  {  for(i=a[0];i>0;i--)  cout<<a[i];  cout<<endl;  }  return 0;
} 

高精除(信息学奥赛一本通-T1308)相关推荐

  1. 1308:【例1.5】高精除-信息学奥赛一本通C++实现

    #include<iostream> using namespace std; #include<cstdio> #include<cstring>#define ...

  2. 信息学奥赛一本通 (C++)上机练习

    信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...

  3. 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

    信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法   更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...

  4. 信息学奥赛一本通 1358:中缀表达式值(expr)

    [题目链接] ybt 1358:中缀表达式值(expr) [题目考点] 1. 表达式求值 中缀表达式转后缀表达式 后缀表达式求值 [解题思路] 由于题目要求做中缀表达式转为后缀表达式,而后求值.那么这 ...

  5. 信息学奥赛一本通 1356:计算(calc)

    [题目链接] ybt 1356:计算(calc) [题目考点] 1. 表达式求值 中缀表达式求值 2. 表达式树 表达式树:一棵表达式树可以表示一系列的运算. 表达式树中的结点包括运算符与数值 str ...

  6. 移动玩具(信息学奥赛一本通-T1453)

    [题目描述] 在一个 4×4 的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动次数将 ...

  7. 信息学奥赛一本通 第五版(C++版)

    信息学奥赛一本通 第五版(C++版)第一部分 C++语言 第一章 C++语言入门 第二节 C++语言程序设计 P15 1. 编写一个能够输出Hello,World!的程序,这个程序常常作为一个初学者接 ...

  8. 信息学奥赛一本通T1451:棋盘游戏

    信息学奥赛一本通T1451:棋盘游戏 [题目描述] 在一个 4×4 的棋盘上有 8 个黑棋和 8 个白棋,当且仅当两个格子有公共边,这两个格子上的棋是相邻的.移动棋子的规则是交换相邻两个棋子. 给出一 ...

  9. 信息学奥赛一本通T1453:移动玩具

    信息学奥赛一本通T1453:移动玩具 [题目描述] 在一个 4×4 的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动时只能将玩具向上下左右四个方向移动,并且移动的 ...

最新文章

  1. js加版本号 webpack_webpack脚手架增加版本号
  2. 10、angular的全部api
  3. 使用wowza和xuggler将RTMP转换为RTSP
  4. mac中如何从vim文本编辑器退回到命令
  5. DTNSim.java注释摘要(学习性质,有错漏的可能,红色为不明确部分)
  6. kali linux 安装驱动安装教程,kali linux安装NVIDA显卡驱动教程
  7. 如何使用RDP报表工具预览页面可以出现完整数据而不是只显示一条
  8. python调用perl_从Python调用Perl脚本不断返回值
  9. html静态页面作业家乡网站设计—我的家乡-四川(9页) HTML+CSS+JavaScript 学生DW网页设计作业成品
  10. js,vue 上传图片前压缩图片(无损压缩,保持在2M以内)
  11. 华为新员工入职180天培训计划
  12. angular中$cacheFactory用法(缓存)
  13. 广告创意设计都有哪些类型
  14. 531 孤独像素 I
  15. 红警战网服务器端源码,红色警戒2战网平台完整版
  16. sklearn sklearn中KFold()的具体用法
  17. spring boot车辆管理系统毕业设计源码031034
  18. HTTP传递文件和接收文件处理之MultipartFile
  19. 修道士和野人过河问题 A*算法 人工智能
  20. 计算机的基础组成部分

热门文章

  1. 以卖香蕉为例,从4个方面了解SQL的数据汇总
  2. 微服务架构设计总结实践
  3. 大神手把手教你设计秒杀架构模型
  4. 漫画:从修灯泡来看各种 IT 岗位,你是哪一种?
  5. Jeewx-api 1.1 版本发布,微信极速 SDK
  6. 微信第一个“小程序”亮相:不是APP胜似APP!
  7. JEECG 3.6.5版本发布,企业级JAVA快速开发平台
  8. svn服务器地址更改
  9. oracle DB死锁
  10. 关于hexo更新到GitHub后博客内容未变问题