1175.除以13

题目描述

输入一个大于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大抵可能或许一定是有问的的罢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值