现在有一个数n为:12345678901234567890123456789012345678901234567890,要你求
n / 2023 和 n % 2023 的数值
模拟长除法
平时我们在进行除法时,用的是长除法,我们可以用代码来模拟这种思路
#include<iostream>
#include<string>
#include<vector>
using namespace std;/ /这个函数用来求余数
int mod(string s1, int divsior)
{
int ant = 0;
for (int i = 0; i < s1.size(); i++)
{
int j = s1[i] - '0';
ant = ant * 10 + j; / /模拟长除法中的将下一位数字与前面余数相连
ant %= divsior; / /模拟长除法中的求余数
}
return ant;
}/ /函数用于进行除法
vector<int> div(string s1, int divsior)
{
vector<int> arr(s1.size());
int ant = 0;
for (int i = 0; i < s1.size(); i++)
{
int j = s1[i] - '0';
ant = ant * 10 + j;
arr.push_back(ant / divsior);
ant %= divsior;
}
return arr;
}int main()
{
string s = "12345678901234567890123456789012345678901234567890";
int res=mod(s, 2023);
cout << res << endl;
vector<int> ret=div(s, 2023);
//去除前导0
int index = 0;
for (int i = 0; i < ret.size(); i++)
{
if (ret[i] != 0)
{
index = i;
break;
}
}
for (int i = index; i < ret.size(); i++)
cout << ret[i];
return 0;
}