【题目描述】
高精除以高精,求它们的商和余数。
【输入】
输入两个低于300位的正整数。
【输出】
输出商和余数。
【输入样例】
1231312318457577687897987642324567864324567876543245671425346756786867867867 1231312318767141738178325678412414124141425346756786867867867
【输出样例】
999999999748590 179780909068307566598992807564736854549985603543237528310337
#include <cstdio> #include <iostream> #include <cstring> using namespace std; int a[101], b[101], c[101], d; void init(int a[]) { string s; cin >> s; a[0] = s.length(); for (int i=1; i<=a[0]; i++) { a[i] = s[a[0]-i] - 48; } } void print(int a[]) { if (a[0] == 0) { cout << 0 << endl; return; } for (int i=a[0]; i>=1; i--) { cout << a[i]; } cout << endl; return; } int compare(int a[], int b[]) { if (a[0] > b[0]) { return 1; } if (a[0] < b[0]) { return -1; } for (int i=a[0]; i>=1; i--) { if (a[i] > b[i]) { return 1; } if (a[i] < b[i]) { return -1; } } return 0; } void numcpy(int p[], int q[], int det) { for (int i=1; i<=p[0]; i++) { q[i+det-1] = p[i]; } q[0] = p[0] + det - 1; } void jian(int a[], int b[]) { int flag = compare(a, b); if (flag == 0) { a[0] = 0; return; } if (flag == 1) { for (int 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) { a[0]--; } return; } } void chugao(int a[], int b[], int c[]) { int tmp[101]; c[0] = a[0] - b[0] + 1; for (int i=c[0]; i>0; i--) { memset(tmp, 0, sizeof(tmp)); numcpy(b, tmp, i); while (compare(a, tmp) >= 0) { c[i]++; jian(a, tmp); } } while (c[0]>0 && c[c[0]]==0) { c[0]--; } return; } int main() { memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); memset(c, 0, sizeof(c)); init(a); init(b); chugao(a,b,c); print(c); print(a); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具