OpenJudge 2737 大整数除法

时间:2022-12-12 20:42:00

链接地址:http://bailian.openjudge.cn/practice/2737/

题目:

总时间限制:
1000ms
内存限制:
65536kB
描述
求2个大的正整数相除的商
输入
第1行是测试数据的组数n,每组测试数据占2行,第1行是被除数,第2行是除数。每组测试数据之间有一个空行,每行数据不超过100个字符
输出
n行,每组测试数据有一行输出是相应的整数商
样例输入
3
2405337312963373359009260457742057439230496493930355595797660791082739646
2987192585318701752584429931160870372907079248971095012509790550883793197894 10000000000000000000000000000000000000000
10000000000 5409656775097850895687056798068970934546546575676768678435435345
1
样例输出
0
1000000000000000000000000000000
5409656775097850895687056798068970934546546575676768678435435345
提示
除法比较困难,建议大家最后做这题

思路:

套用大整数模板

代码:

 #include <iostream>
#include <cstdio>
#include <string>
using namespace std; string sub(string s1,string s2)
{
int flag = ;
if(s1.length()<s2.length() || (s1.length()==s2.length() && s1 < s2))
{
flag = ;
string temp=s1;
s1=s2;
s2=temp;
} int i,j;
for(i=s1.length()-,j=s2.length()-;i>=;i--,j--)
{
s1[i]=char(s1[i]-(j>=?s2[j]-'':)); //注意细节
if(s1[i]-''<)
{
s1[i]=char(s1[i] + );
s1[i-]--;
}
} for(i = ; i < s1.length(); i++)
{
if(s1[i] != '') break;
}
if(i == s1.length()) i = s1.length()-;
s1 = s1.substr(i); if(flag) s1 = "-" + s1; return s1;
}
string sum(string s1,string s2)
{
if(s1.length()<s2.length())
{
string temp=s1;
s1=s2;
s2=temp;
}
int i,j;
for(i=s1.length()-,j=s2.length()-;i>=;i--,j--)
{
s1[i]=char(s1[i]+(j>=?s2[j]-'':)); //注意细节
if(s1[i]-''>=)
{
s1[i]=char((s1[i]-'')%+'');
if(i) s1[i-]++;
else s1=''+s1;
}
}
return s1;
} string div(string s1,string s2)
{
string res = "";
if(s1.length()<s2.length() || (s1.length()==s2.length() && s1 < s2))
{
return "";
} int i;
int sub_length = s1.length() - s2.length();
for(i = sub_length; i >= ; i--)
{
string s3(i,'');
string s4 = s2 + s3; do
{
string temp = sub(s1,s4);
if(temp[] == '-') break;
else
{
s1 = temp;
res = sum(res,("" + s3));
}
}while();
}
return res;
} int main()
{
int n;
cin>>n;
string str1,str2;
while(n--)
{
cin>>str1>>str2;
cout<<div(str1,str2)<<endl;
}
return ;
}

OpenJudge 2737 大整数除法的更多相关文章

  1. OpenJudge 2980 大整数乘法

    链接地址:http://bailian.openjudge.cn/practice/2980/ 题目: 总时间限制: 1000ms 内存限制: 65536kB 描述 求两个不超过200位的非负整数的积 ...

  2. 九度OJ 1125:大整数的因子 (大数运算)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:974 解决:494 题目描述: 已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k. ...

  3. 自己动手写Java大整数《3》除法和十进制转换

    之前已经完毕了大整数的表示.绝对值的比較大小.取负值.加减法运算以及乘法运算. 详细见前两篇博客(自己动手写Java * ). 这里加入除法运算. 另外看到作者Pauls Gedanken在blog( ...

  4. AC日记——大整数的因子 openjudge 1&period;6 13

    13:大整数的因子 总时间限制:  1000ms 内存限制:  65536kB 描述 已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k. 输入 ...

  5. Ac日记——大整数减法 openjudge 1&period;6 11

    11:大整数减法 总时间限制:  1000ms 内存限制:  65536kB 描述 求两个大的正整数相减的差. 输入 共2行,第1行是被减数a,第2行是减数b(a > b).每个大整数不超过20 ...

  6. AC日记——大整数加法 openjudge 1&period;6 10

    10:大整数加法 总时间限制:  1000ms 内存限制:  65536kB 描述 求两个不超过200位的非负整数的和. 输入 有两行,每行是一个不超过200位的非负整数,可能有多余的前导0. 输出 ...

  7. openjudge计算概论-大整数加法

    /*=====================================================================1004:大整数加法总时间限制: 1000ms 内存限制: ...

  8. 大整数四则运算(vector与数组两种版本实现&rpar;

    每逢大整数四则运算,都会怯懦,虽是算法竞赛必会的东西,也零散的学过,简单的总结过,但不成体系的东西心里一直没底. 所以今天消耗了大量的卡路里,啃了几套模板之后终于总结成了一套自己的模板 再也不用担心大 ...

  9. ACM学习之路————一个大整数与一个小整数不得不说得的秘密

    这个相对于两个大整数的运算来说,只能说是,low爆了. 只要利用好除法的性质,这类题便迎刃而解.O(∩_∩)O哈哈~ //大整数除一个int数 #include<iostream> #in ...

随机推荐

  1. 清空Github上某个文件的历史版本

    title: 清空Github上某个文件的历史版本 author: 青南 date: 2015-01-08 16:04:53 categories: [经验] tags: [Github,histor ...

  2. 制作宅基腐主页 &amp&semi;&amp&semi; 制作个人简历--材料:BootStrap

    宅基腐主页 主页分为四大板块:导航栏,轮播图,主页内容,相关信息. 导航栏:<nav>标签,class="navbar",navbar-inverse为反色,navba ...

  3. Discuz*蜘蛛最有效的方法

    闲来无事翻代码,发现一个好东西,Discuz设计者考虑到了有些流氓搜索引擎不遵守roborts.txt,于是设计了一个NOROBOT变量,当这个变量为true 的时候,定义中的搜索引擎都会无法访问,默 ...

  4. java基础知识回顾之java Thread类学习(十二)-- 线程中断

    官方文档翻译: 如果本线程是处于阻塞状态:调用线程的wait(), wait(long)或wait(long, int)会让它进入等待(阻塞)状态,或者调用线程的join(), join(long), ...

  5. 【leetcode❤python】226&period; Invert Binary Tree

    #-*- coding: UTF-8 -*- # Definition for a binary tree node.# class TreeNode(object):#     def __init ...

  6. Spring集成hibernate错误

    八月 25, 2016 7:55:31 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin警告: [SetPropertiesRule ...

  7. Django里,如何更改ADMIN管理后台的显示

    今天在慢慢完善管理后台的一些体验, 第一是要扩展默认显示类,就是现在弄的. 第二是要让一些显示框更自然友好,这是下一次要作的. 在各个app的admin.py里,加入相关的MIXIN类 class S ...

  8. Git创建一个自己的本地仓库

    如果我们要把一个项目加入到Git的版本管理中,可以在项目所在的目录用git init命令建立一个空的本地仓库,然后再用git add命令把它们都加入到Git本地仓库的暂存区(stage or inde ...

  9. SGU 156&period; Strange Graph(欧拉路)

    时间限制:0.25s 空间限制:6M 题目描述 让我们想象一个无向图G=<V,E>.如果边(u,v)在边集E中,那么我们就说两个顶点u和v是邻接点.在这种情况下,我们也说u是v的一个邻接点 ...

  10. 什么是Numpy的ndarray

    什么是Numpy的ndarray 首先,Numpy的核心是ndarray. 然后,ndarray本质是数组,其不同于一般的数组,或者Python 的list的地方在于它可以有N 维(dimention ...