Процесс завершен со значением 3221225477, где проблема? - PullRequest
0 голосов
/ 15 марта 2020

всякий раз, когда я выполняю программу, она возвращает «Процесс завершен со значением 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");










}
...