всякий раз, когда я выполняю программу, она возвращает «Процесс завершен со значением 3221225477» и ничего больше, я знаю, что это означает, что это выходит за пределы или что-то в этом роде, но я не могу понять, в чем здесь проблема, для меня все выглядит так, как будто оно должно работать Я точно знаю, что это в моей функции «pas», потому что остальные копируют и вставляют, и они всегда работают, вот мой код:
#include<bits/stdc++.h>
using namespace std;
string longDivision(string number, int divisor)
{
string ans;
int idx = 0;
int temp = number[idx] - '0';
while (temp < divisor)
temp = temp * 10 + (number[++idx] - '0');
while (number.size() > idx)
{
ans += (temp / divisor) + '0';
temp = (temp % divisor) * 10 + number[++idx] - '0';
}
if (ans.length() == 0)
return "0";
return ans;
}
string multiply(string num1, string num2)
{
int len1 = num1.size();
int len2 = num2.size();
if (len1 == 0 || len2 == 0)
return "0";
vector<int> result(len1 + len2, 0);
int i_n1 = 0;
int i_n2 = 0;
for (int i=len1-1; i>=0; i--)
{
int carry = 0;
int n1 = num1[i] - '0';
i_n2 = 0;
for (int j=len2-1; j>=0; j--)
{
int n2 = num2[j] - '0';
int sum = n1*n2 + result[i_n1 + i_n2] + carry;
carry = sum/10;
result[i_n1 + i_n2] = sum % 10;
i_n2++;
}
if (carry > 0)
result[i_n1 + i_n2] += carry;
i_n1++;
}
int i = result.size() - 1;
while (i>=0 && result[i] == 0)
i--;
if (i == -1)
return "0";
string s = "";
while (i >= 0)
s += to_string(result[i--]);
return s;
}
string pas(string a, int b){
string c;
c[0]='1';
for(int i=1; i<=a.size()-1; i++){
c[i]='0';
}
string a1=a;
a1[0]=a1[0]-c[0];
string p=to_string(b);
string k69=longDivision(a1,b);
string k=multiply(k69,p);
string pasuxi=a;
int ksize=k.size()-1;
for(int i=a.size()-1; i>=a.size()-p.size(); i--){
if(k[ksize]>a[i]){
pasuxi[i]=a[i]-k[ksize]+10;
a[i-1]=a[i-1]-1;
pasuxi[i-1]=a[i-1];
}else{
pasuxi[i]=a[i]-k[ksize];
}
ksize--;
}
return pasuxi;
}
int main(){
int n,k;
cin>>n>>k;
string a;
string k1=to_string(k);
for(int i=0; i<n; i++){
if(i<k1.size()){
a[i]=k1[i];
}else{
a[i]='0';
}
}
cout<<pas(a, k);
system("pause");
}