阅读背景:

大数对整数的相除、取模、相乘运算

来源:互联网 

模拟...

#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
#define maxn 10000

int gcd(int a, int b) {
    return b == 0 ? a : gcd(b, a%b);
}

int modNum(char* ch,int b) // 大数对整数的取模运算
{
    int left=0,i;
    for(i=-1; ch[i+1]!='

模拟...

#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
#define maxn 10000

int gcd(int a, int b) {
    return b == 0 ? a : gcd(b, a%b);
}

int modNum(char* ch,int b) // 大数对整数的取模运算
{
    int left=0,i;
    for(i=-1; ch[i+1]!='\0'; ++i);
    for(int j=0; j<=i; ++j)
    {
        left = (left*10)%b+ch[j]-'0';
        left %=b;
    }
    return left;
}

char* div(char *ch, int b) { // 大数对整数的相除运算
    char ansdiv[1010] = "\0";
    int cnt = 0, remain = 0;
    for (int i=0; ch[i]; ++i) {
        if (remain*10+ch[i]-'0' >= b) { // 够除
            ansdiv[cnt++] = (remain*10 + ch[i]-'0')/b+'0';
            remain = (remain*10 + ch[i]-'0')%b;
        }
        else if (cnt != 0){
            ansdiv[cnt++] = '0'; // 否则添0
            remain = remain*10 + ch[i] - '0';
        }
        else remain = remain*10 + ch[i] - '0';
    }
    if (remain && cnt==0) {
        ansdiv[0] = '0';
    }
    return ansdiv;
}

char* multi(char *ch, int b)  { // 大数和整数相乘
    int i;
    int jinwei = 0;
    char ansdiv[1010];
    for (i=-1; ch[i+1]; ++i); // i为字符串长度
    int cnt = 0;

    for (int j=i; j>=0; --j) {
        int temp = (ch[j] - '0' + jinwei) * b;
        ansdiv[cnt++] = temp % 10 + '0';
        temp = temp / 10;
    }
    while(jinwei) {
        ansdiv[cnt++] = jinwei % 10;
        jinwei /= 10;
    }
    ansdiv[cnt++] = '\0';
    return ansdiv;
}

int main() {
    int mod;
    int b;
    char res[210];
    char *ans;
    while(cin >> res >> b) {
        // 除法运算
        ans = div(res, b);
        cout << ans << "...\n";
        // 乘法运算
        ans = multi(res, b);
        int len = strlen(ans);
        for (int i=len-1; i>=0; --i) {
            cout << ans[i];
        }
        cout << "---\n";
        //取模运算
        int ansmod = modNum(res, b);
        cout << ansmod << "....\n";
    }
    return 0;
}

  


'; ++i); for(int j=0; j<=i; ++j) { left = (left*10)%b+ch[j]-'0'; left %=b; } return left; } char* div(char *ch, int b) { // 大数对整数的相除运算 char ansdiv[1010] = "

模拟...

#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
#define maxn 10000

int gcd(int a, int b) {
    return b == 0 ? a : gcd(b, a%b);
}

int modNum(char* ch,int b) // 大数对整数的取模运算
{
    int left=0,i;
    for(i=-1; ch[i+1]!='\0'; ++i);
    for(int j=0; j<=i; ++j)
    {
        left = (left*10)%b+ch[j]-'0';
        left %=b;
    }
    return left;
}

char* div(char *ch, int b) { // 大数对整数的相除运算
    char ansdiv[1010] = "\0";
    int cnt = 0, remain = 0;
    for (int i=0; ch[i]; ++i) {
        if (remain*10+ch[i]-'0' >= b) { // 够除
            ansdiv[cnt++] = (remain*10 + ch[i]-'0')/b+'0';
            remain = (remain*10 + ch[i]-'0')%b;
        }
        else if (cnt != 0){
            ansdiv[cnt++] = '0'; // 否则添0
            remain = remain*10 + ch[i] - '0';
        }
        else remain = remain*10 + ch[i] - '0';
    }
    if (remain && cnt==0) {
        ansdiv[0] = '0';
    }
    return ansdiv;
}

char* multi(char *ch, int b)  { // 大数和整数相乘
    int i;
    int jinwei = 0;
    char ansdiv[1010];
    for (i=-1; ch[i+1]; ++i); // i为字符串长度
    int cnt = 0;

    for (int j=i; j>=0; --j) {
        int temp = (ch[j] - '0' + jinwei) * b;
        ansdiv[cnt++] = temp % 10 + '0';
        temp = temp / 10;
    }
    while(jinwei) {
        ansdiv[cnt++] = jinwei % 10;
        jinwei /= 10;
    }
    ansdiv[cnt++] = '\0';
    return ansdiv;
}

int main() {
    int mod;
    int b;
    char res[210];
    char *ans;
    while(cin >> res >> b) {
        // 除法运算
        ans = div(res, b);
        cout << ans << "...\n";
        // 乘法运算
        ans = multi(res, b);
        int len = strlen(ans);
        for (int i=len-1; i>=0; --i) {
            cout << ans[i];
        }
        cout << "---\n";
        //取模运算
        int ansmod = modNum(res, b);
        cout << ansmod << "....\n";
    }
    return 0;
}

  


"; int cnt = 0, remain = 0; for (int i=0; ch[i]; ++i) { if (remain*10+ch[i]-'0' >= b) { // 够除 ansdiv[cnt++] = (remain*10 + ch[i]-'0')/b+'0'; remain = (remain*10 + ch[i]-'0')%b; } else if (cnt != 0){ ansdiv[cnt++] = '0'; // 否则添0 remain = remain*10 + ch[i] - '0'; } else remain = remain*10 + ch[i] - '0'; } if (remain && cnt==0) { ansdiv[0] = '0'; } return ansdiv; } char* multi(char *ch, int b) { // 大数和整数相乘 int i; int jinwei = 0; char ansdiv[1010]; for (i=-1; ch[i+1]; ++i); // i为字符串长度 int cnt = 0; for (int j=i; j>=0; --j) { int temp = (ch[j] - '0' + jinwei) * b; ansdiv[cnt++] = temp % 10 + '0'; temp = temp / 10; } while(jinwei) { ansdiv[cnt++] = jinwei % 10; jinwei /= 10; } ansdiv[cnt++] = '

模拟...

#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
#define maxn 10000

int gcd(int a, int b) {
    return b == 0 ? a : gcd(b, a%b);
}

int modNum(char* ch,int b) // 大数对整数的取模运算
{
    int left=0,i;
    for(i=-1; ch[i+1]!='\0'; ++i);
    for(int j=0; j<=i; ++j)
    {
        left = (left*10)%b+ch[j]-'0';
        left %=b;
    }
    return left;
}

char* div(char *ch, int b) { // 大数对整数的相除运算
    char ansdiv[1010] = "\0";
    int cnt = 0, remain = 0;
    for (int i=0; ch[i]; ++i) {
        if (remain*10+ch[i]-'0' >= b) { // 够除
            ansdiv[cnt++] = (remain*10 + ch[i]-'0')/b+'0';
            remain = (remain*10 + ch[i]-'0')%b;
        }
        else if (cnt != 0){
            ansdiv[cnt++] = '0'; // 否则添0
            remain = remain*10 + ch[i] - '0';
        }
        else remain = remain*10 + ch[i] - '0';
    }
    if (remain && cnt==0) {
        ansdiv[0] = '0';
    }
    return ansdiv;
}

char* multi(char *ch, int b)  { // 大数和整数相乘
    int i;
    int jinwei = 0;
    char ansdiv[1010];
    for (i=-1; ch[i+1]; ++i); // i为字符串长度
    int cnt = 0;

    for (int j=i; j>=0; --j) {
        int temp = (ch[j] - '0' + jinwei) * b;
        ansdiv[cnt++] = temp % 10 + '0';
        temp = temp / 10;
    }
    while(jinwei) {
        ansdiv[cnt++] = jinwei % 10;
        jinwei /= 10;
    }
    ansdiv[cnt++] = '\0';
    return ansdiv;
}

int main() {
    int mod;
    int b;
    char res[210];
    char *ans;
    while(cin >> res >> b) {
        // 除法运算
        ans = div(res, b);
        cout << ans << "...\n";
        // 乘法运算
        ans = multi(res, b);
        int len = strlen(ans);
        for (int i=len-1; i>=0; --i) {
            cout << ans[i];
        }
        cout << "---\n";
        //取模运算
        int ansmod = modNum(res, b);
        cout << ansmod << "....\n";
    }
    return 0;
}

  


'; return ansdiv; } int main() { int mod; int b; char res[210]; char *ans; while(cin >> res >> b) { // 除法运算 ans = div(res, b); cout << ans << "...\n"; // 乘法运算 ans = multi(res, b); int len = strlen(ans); for (int i=len-1; i>=0; --i) { cout << ans[i]; } cout << "---\n"; //取模运算 int ansmod = modNum(res, b); cout << ansmod << "....\n"; } return 0; } #include <stdio.h> #include <iostre



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: