问题描述
求两个大的正整数相除的商
输入数据
第1 行是测试数据的组数n,每组测试数据占2 行,第1 行是被除数,第2 行是除数。
每组测试数据之间有一个空行,每行数据不超过100 个字符
输出要求
n 行,每组测试数据有一行输出是相应的整数商
输入样例
3
2405337312963373359009260457742057439230496493930355595797660791082739646
2987192585318701752584429931160870372907079248971095012509790550883793197894
10000000000000000000000000000000000000000
10000000000
5409656775097850895687056798068970934546546575676768678435435345
1
输出样例
0
1000000000000000000000000000000
5409656775097850895687056798068970934546546575676768678435435345
#include <stdio.h>
#include <string.h>
int iNum1[210];
int iNum2[210];
int minus(int* p1, int* p2, int length1, int length2){
if(length1 < length2)
return -1;
int i;
if(length1 == length2){
for(i = length1 -1; i >= 0; i --){
if(p1[i] < p2[i])
return -1;
}
}
for(i = 0; i < length1; i++){
p1[i] -= p2[i];
if(p1[i] < 0){
p1[i] += 10;
p1[i + 1] --;
}
}
for(i = length1 -1; i >= 0; i--){
if(p1[i])
return i + 1;
}
return 0;
}
int main(){
int nCases;
char cNum1[210];
char cNum2[210];
int result[210];
scanf("%d", &nCases);
while(nCases--){
scanf("%s", cNum1);
scanf("%s", cNum2);
memset(iNum1, 0, sizeof(iNum1));
memset(iNum2, 0, sizeof(iNum2));
memset(result, 0, sizeof(result));
int i, j = 0;
int length1 = strlen(cNum1);
for(i = length1 - 1; i >= 0; i--){
iNum1[j] = cNum1[i] - '0';
j++;
}
j = 0;
int length2 = strlen(cNum2);
for(i = length2 - 1; i >= 0; i--){
iNum2[j] = cNum2[i] - '0';
j++;
}
length1 = minus(iNum1, iNum2, length1, length2);
if(length1 < 0){
printf("0\n");
continue;
}
else if(length1 == 0){
printf("1\n");
continue;
}
result[0]++;
int dis = length1 - length2;
for(i = length1 -1; i >= 0; i--){
if(i >= dis)
iNum2[i] = iNum2[i - dis];
else
iNum2[i] = 0;
}
length2 = length1;
for(i = 0; i <= dis;i ++){
int disTmp;
while((disTmp = minus(iNum1, iNum2 + i, length1, length2 - i)) >= 0){
length1 = disTmp;
result[dis - i]++;
}
}
for(i = 0; i < 210; i++){
if(result[i] >= 10){
result[i + 1] += result[i] / 10;
result[i] %= 10;
}
}
int flag = 0;
for(i = 209; i >= 0;i --){
if(flag)
printf("%d", result[i]);
else if(result[i]){
flag = 1;
printf("%d", result[i]);
}
}
printf("\n");
}
return 0;
}
分享到:
相关推荐
需要杰哥讲解的毕设js代码
C++自制小游戏《杰哥和阿伟》源码(cpp) C++小游戏,由哔哩哔哩的梗制作而成,切勿当真哦~ 游戏内行为请勿模仿! 原创小游戏,请勿转载或整改~ 记得关注@Ender_momo,短时间内将发布制作过程
杰哥两套卷.rar
有跟我一样看不懂代码,只能盲抄来理解的吗,杰哥看到了莫生气我自己现在真写不了好了,今天的案例与while语句有关
本人收集的几套百度笔试题。 doc格式,需要找工作的可以看看
Ceph是一个开源的分布式文件系统。因为它还支持块存储、对象存储,所以很自然的被用做云计算框架openstack或cloudstack整个存储后端。当然也可以单独作为存储,例如部署一套集群作为对象存储、SAN存储、NAS存储等。...
python深度学习-pandas
杰哥应急响应ppt
百度google 笔试题汇总,全是word 文档。对找实习有很多好处的
C语言35页第4题第2小问.exe
大家可以通过这篇文献对控制领域有一个大体的认知。 更多炸裂内容,详见公粽号 :杰哥的无人驾驶便利店。
文章目录1 故事的开局2 杰哥的表演2.1 sl2.2 htop2.3 gcp2.4 hollywood2.5 cmatrix2.6 asciiview2.7 ninvaders2.8 bastet2.9 pipe2.10 oneko3 博主的炸弹4 总结 1 故事的开局 周末到了,部门里几个小伙伴约好了一起...
该文档为配套的【杰哥日常小工具】字符串处理工具的登录效验码,下载工具后可登录解码该文档信息获取管理员或VIP登录码
matlab软件下载:lingo教程数学建模Lingo系列视频(爆肝杰哥): Lingo(1)基础篇:BV1CT4y177qS Lingo(2)入门篇:BV1U
无人驾驶车辆轨迹跟踪控制综述型参考英文文献!大家可以通过这篇文献对控制领域有一个大体的认知。 更多炸裂内容,详见公粽号 :杰哥的无人驾驶便利店
无人驾驶车辆轨迹跟踪控制综述型参考英文文献!大家可以通过这篇文献对控制领域有一个大体的认知。 更多炸裂内容,详见弓粽Hao :杰哥的无人驾驶便利店