题目描述
输入一个大于0的大整数N,长度不超过100位,要求输出其除以13得到的商和余数。
输入
一个大于0的大整数,长度不超过100位。
输出
两行,分别为整数除法得到的商和余数。
样例
输入数据 1
2132104848488485
输出数据 1
164008065268345
0
#include <iostream>
using namespace std;
int nrr[100];
int quotient[100];
int main()
{
string str;
cin >> str;
int len = str.size();
for (int i = 0; i < len; i++)
nrr[i] = str[i]-'0';//把字符串里的数据复制到int型数组里(命名arr->nrr)
int rm = nrr[0];//让余数首位=被除数首位(命名remainder->rm)
for (int i = 0; i < len-1; i++)//l=len-2时,已使用了nrr数组最后一位,即索引为len-1的数据
{
rm = (rm * 10 + nrr[i + 1]);//第一位除以13一定除不开 | 每次计算商时本位乘10再加下一位
quotient[i] = rm / 13;//商,包括商为零
rm = rm % 13;//rm%13得本次运算后的余数
}
int i = 0;
while (quotient[i] == 0 && quotient[i + 1] != NULL)//除去前置0,同时防止商是0时输出为空
i++;
while (i < len - 1)
{
cout << quotient[i];
i++;
}
cout << endl <<rm;
return 0;
}
高精度,直接用int,long,long long 都会超长度
用数组模拟手算的除法
d能跑,oj能过,改一改数据最多算到除以13,除数小于10大于13大抵可能或许一定是有问的的罢