• 大数加减乘除取模运算模板


    #include <bits/stdc++.h>
    using namespace std;
    
    string add(string a, string b) {
        string c;
        int len1 = a.length();
        int len2 = b.length();
        int len = max(len1, len2);
        for(int i = len1; i < len; i ++)
            a = "0" + a;
        for(int i = len2; i < len; i ++)
            b= "0" + b;
        int ok = 0;
        for(int i = len - 1; i >= 0; i --) {
            char temp = a[i] + b[i] - '0' + ok;
            if(temp > '9') {
                ok = 1;
                temp -= 10;
            }
            else ok = 0;
            c = temp + c;
        }
        if(ok) c = "1" + c;
        return c;
    }
    
    string sub(string a, string b) {
        string c;
        bool ok = 0;
        int len1 = a.length();
        int len2 = b.length();
        int len = max(len1, len2);
        for(int i = len1; i < len; i ++)
            a = "0" + a;
        for(int i = len2; i < len; i ++)
            b = "0" + b;
        if(a < b) {
            string temp = a;
            a = b;
            b = temp;
            ok = 1;
        }
        for(int i = len - 1; i >= 0; i --) {
            if(a[i] < b[i]) {
                a[i - 1] -= 1;
                a[i] += 10;
            }
            char temp = a[i] - b[i] + '0';
            c = temp + c;
        }
        int pos = 0;
        while(c[pos] == '0' && pos < len) pos ++;
        if(pos == len) return "0";
        if(ok) return "-" + c.substr(pos);
        return c.substr(pos);
    }
    
    string mul(string a, int b) {
        string c;
        char s;
        int len = a.length();
        int ok = 0;
        for(int i = len - 1; i >= 0; i --) {
            int temp = (a[i] - '0') * b + ok;
            ok = temp / 10;
            s = temp % 10 + '0';
            c = s + c;
        }
        while(ok) {
            s = ok % 10 + '0';
            c = s + c;
            ok /= 10;
        }
        return c;
    }
    
    string div(string a, int b) {
        string c;
        int len = a.length();
        int ans = 0;
        char s;
        for(int i = 0; i < len; i ++) {
            ans = ans * 10 + a[i] - '0';
            s = ans / b + '0';
            ans %= b;
            c += s;
        }
        int pos = 0;
        while(pos < len && c[pos] == '0') pos ++;
        if(pos == len) return "0";
        return c.substr(pos);
    }
    
    int mod(string s, int x) {
        int len = s.length();
        int ans = 0;
        for(int i = 0; i < len; i ++)
            ans = (ans * 10 + s[i] - '0') % x;
        return ans;
    }
    
    string delZero(string s) {
        int len = s.length();
        string ans = "";
        int temp = -1;
        int flag = 0;
        if(s[0] == '-') flag = 1;
        for(int i = flag; i < len; i ++) {
            if(s[i] != '0') {
                temp = i;
                break;
            }
        }
        if(temp == -1)
            return "0";
        if(flag) ans += '-';
        for(int i = temp; i < len; i ++)
            ans += s[i];
        return ans;
    }
    
    int main() {
        string s, t;
        return 0;
    }
    

      

  • 相关阅读:
    自信你就赢了
    记移动开发者大会中国(MDCC)
    Android Google Map V2想说爱你不容易
    关于用好Android资料的一些总结和反思
    按钮添加四种点击事件
    Google的可穿戴设备Android Wear抢先看
    跟上潮流,做个微信开发者平台
    我也开始玩儿硬件——树莓派入门
    我也来自己做刷机包
    简单谈谈eclipse下搭建PhoneGap环境来开发Android程序
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/10664325.html
Copyright © 2020-2023  润新知