OpenJudge 2737 大整数除法
2024-08-25 01:53:38
链接地址: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 ;
}
最新文章
- MVC之前的那点事儿系列(10):MVC为什么不再需要注册通配符(*.*)了?
- 2014优秀的好用的20款免费jQuery插件推荐
- Eclipse工作常见问题总结
- Mosquitto-Ubuntu 14.04快速安装问题解决
- 禁用 WebView 放大镜及拷贝粘贴弹出框
- WPF编译时提示“...不包含适合于入口点的静态‘Main’方法 ...”
- redis作为mysql的缓存服务器(读写分离) (转)
- javascript的insertBefore、insertAfter和appendChild简单介绍
- radiobutton设置样式
- NYOJ 5 Binary String Matching
- 移动web开发之touch事件
- 帝国cms更新报错解决办法
- 一文总结 Linux 虚拟网络设备 eth, tap/tun, veth-pair
- Hadoop记录-安装ambari hdp集群
- Kafka实践1--Producer
- 02-MySQL的安装和配置
- 桂电第一次程序设计 C STL 排序
- Packagist 镜像使用方法--composer
- prometheus安装、使用
- Django + Ansible 主机管理(有源码)
热门文章
- MinGW安装和使用总结
- java.lang.UnsupportedClassVersionError: Bad version number in .class file 解决办法
- hdu 5432 Pyramid Split 二分
- POJ_1365_Prime_Land
- 未定义标识符_ConnectionPtr
- android学习日记22--Animation动画简介
- 在centos上使用yum安装redis及php扩展php-redis
- extremeComponents(ec)源码分析
- 快递查询API接口对接方法
- 设置apt-get