版权声明:反正也没有人会转,下一个 https://blog.csdn.net/drtlstf/article/details/83311108
Description
输入两个整数x,y,输出它们的商和余数。
Input
输入两个整数x,y(0 <= x,y <= 10^100)
Output
输出共计两行,第一行为它们的商,第二行为他们的余数
Sample Input
123
12
Sample Output
10
3
模板
#include <iostream>
#include <cstring>
#include <string>
#define SIZE 1010
using namespace std;
string s;
int a[SIZE], b[SIZE], temp[SIZE], lena, lenb, i;
bool comp(void) // 比较大小
{
int i;
if (lena < lenb + ::i)
{
return false;
}
if (lena > lenb + ::i)
{
return true;
}
for (i = lena; i; --i)
{
if (a[i] < temp[i])
{
return false;
}
if (a[i] > temp[i])
{
return true;
}
}
return true;
}
void sub(void) // 减法
{
int i;
for (i = 1; i <= lena; ++i)
{
a[i] -= temp[i];
if (a[i] < 0)
{
--a[i+1];
a[i] += 10;
}
}
while ((!a[lena]) && (lena))
{
--lena;
}
return;
}
int main(void)
{
int len, c, j;
bool flag = false;
cin >> s;
lena = s.size();
for (i = 1; i <= lena; ++i)
{
a[i] = s[lena-i] - '0';
}
cin >> s;
lenb = s.size();
for (i = 1; i <= lenb; ++i)
{
b[i] = s[lenb-i] - '0';
}
len = max(lena - lenb, 0);
for (i = len; ~i; --i) // 模板,不用说了
{
memset(temp, 0, sizeof (temp));
for (j = 1; j <= lenb; ++j)
{
temp[i+j] = b[j];
}
c = 0;
while (comp())
{
++c;
sub();
}
if (c)
{
flag = true;
}
if (flag)
{
printf("%d", c); // 输出商
}
}
if (!flag)
{
printf("0");
}
printf("\n");
for (i = lena; i; --i)
{
printf("%d", a[i]);
}
if (!lena)
{
printf("0");
}
return 0;
}