不过还是有要注意的地方: 1.X 要使用 unsigned long long int 类型,因为 long long 范围 大概是±10的18次方. 2.数组不能开的过小 3.补充到注释里面了
#include <bits/stdc++.h>
using namespace std;
string s,o;
int num1[100010],num[100010];
void F (string str,unsigned long long int num2);
int main ()
{
int t = 0;
unsigned long long int X = 0;
cin >> t;
while ( t-- ) {
cin >> o;
s+=o;
}
cin >> X;
F(s,X);
return 0;
}
void F (string str,unsigned long long int num2)
{
unsigned long long int i=0,j=0,k=0,l=0,len=0,yu=0,len1=0;
len=str.length();//保存 字符串 的长度
for (i = 0;i < len; i++)
num1[i] = str[i] - '0';//将字符转换为数字,便于计算
for (j = 0;j < len; j++)
{
num[j] = (yu*10+num1[j]) / num2;
yu = (yu*10 + num1[j]) % num2;
}
/*此过程类似于草稿值上四则运算的步骤(不理解的可以自己在草稿值上一步一步地算一算)*/
while (num[len1] == 0 && len1 < len)
len1++;//去除 结果 前的0
//有需要的话要判断 结果 是否为0
if (len == 1&&num[0] == 0) printf ("0");
else
{
for (k = len1;k < len; k++)
printf("%d",num[k]);
}
printf (" %llu",yu);
return;
}