头像

c_33




离线:5小时前


最近来访(15)
用户头像
hai阿卢
用户头像
Acacia_Ma
用户头像
Eartha
用户头像
方攵飛夢想
用户头像
啥暴解也不会
用户头像
阿兔
用户头像
Castle_4
用户头像
wydxry
用户头像
acwing_9430
用户头像
奇异博士学编程
用户头像
._7732
用户头像
金属
用户头像
52Hertz_49
用户头像
dul


c_33
8天前

C++中的高精度整数除以低精度整数

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

// A/b, 商为C, 余数为r
vector<int> div(vector<int> &A, int b, int &r) {
    vector<int> C;

    r = 0;
    for ( int i = A.size() - 1; i >= 0; i -- ) {
        r = r * 10 + A[i];
        C.push_back(r / b);
        r %= b;
    }
    reverse(C.begin(), C.end());
    while ( C.size() > 1 && C.back() == 0 ) C.pop_back(); //消去前导0

    return C; 
} 

int main() {
    string a;
    int b;
    vector<int> A;

    cin >> a >> b;
    for ( int i = a.size() - 1; i >= 0; i -- ) A.push_back(a[i] - '0');

    int r;
    vector<int> C = div(A, b, r);
    for ( int i = C.size() - 1; i >= 0; i -- ) cout << C[i];
    cout << endl << r; 

    return 0;
}



c_33
8天前

C++中的高精度整数乘低精度整数

#include <iostream>
#include <vector>

using namespace std;

vector<int> mul(vector<int> &A, int b) {
    vector<int> C;

    int t = 0;
    for ( int i = 0; i < A.size() || t; i ++ ) {
        if ( i < A.size() ) t += A[i] * b;
        C.push_back(t % 10);
        t /= 10;
    }

    return C;
}

int main() {
    string a;
    int b;
    vector<int> A;

    cin >> a >> b;
    for ( int i = a.size() - 1; i >= 0; i -- ) A.push_back(a[i] - '0');

    vector<int> C = mul(A, b);
    for ( int i = C.size() - 1; i >= 0; i -- ) cout << C[i];

    return 0;
}



c_33
8天前

C++中的高精度减法

#include <iostream>
#include <vector>

using namespace std;

//判断A>=B是否成立 
bool cmp(vector<int> &A, vector<int> &B) {
    if ( A.size() != B.size() ) return A.size() > B.size();
    for ( int i = A.size() - 1; i >= 0 ; i -- ) {
        if ( A[i] != B[i] )
            return A[i] > B[i];
    } 
    return true;
}

vector<int> sub(vector<int> &A, vector<int> &B) {
    vector<int> C;

    int t = 0;
    for ( int i = 0; i < A.size(); i ++ ) {
        t = A[i] - t;
        if ( i < B.size() ) t -= B[i];
        C.push_back((t + 10) % 10);
        if ( t < 0 ) t = 1;
        else t = 0;
    }
    while ( C.size() > 1 && C.back() == 0 ) C.pop_back(); //去掉前导0 

    return C;
}

int main() {
    string a, b;
    vector<int> A, B;

    cin >> a >> b;
    for ( int i = a.size() - 1; i >= 0; i -- ) A.push_back(a[i] - '0');
    for ( int i = b.size() - 1; i >= 0; i -- ) B.push_back(b[i] - '0');

    if (cmp(A, B)) {
        vector<int> C = sub(A, B);

        for ( int i = C.size() - 1; i >= 0; i -- ) cout << C[i];
    } else {
        vector<int> C = sub(B, A);

        cout << "-";
        for ( int i = C.size() - 1; i >= 0; i -- ) cout << C[i];
    }

    return 0;
}



c_33
9天前

C++中的高精度加法

#include <iostream>
#include <vector>

using namespace std;

vector<int> add(vector<int> &A, vector<int> &B) {
    vector<int> C;

    int t = 0; //进位
    for ( int i = 0; i < A.size() || i < B.size(); i ++ ) {
        if (i < A.size()) t += A[i];
        if (i < B.size()) t += B[i];
        C.push_back(t % 10);
        t /= 10;
    } 
    if (t) C.push_back(1);

    return C;
}

int main() {
    string a, b;
    vector<int> A, B;

    cin >> a >> b;
    for ( int i = a.size() - 1; i >= 0; i -- ) A.push_back(a[i] - '0'); //将字符类型转变成数字类型 
    for ( int i = b.size() - 1; i >= 0; i -- ) B.push_back(b[i] - '0');

    vector<int> C = add(A, B);
    for ( int i = C.size() - 1; i >= 0; i -- ) cout << C[i];

    return 0;
}


活动打卡代码 AcWing 21. 斐波那契数列

c_33
11天前
class Solution {
public:
    int Fibonacci(int n) {
        int a = 0, b = 1;
        while ( n -- ) {
            int c = a + b;
            a = b;
            b = c;
        }
        return a;
    }
};


活动打卡代码 AcWing 823. 排列

c_33
11天前
#include <iostream>

using namespace std;

int n;

void dfs(int u, int nums[], bool st[])
{
    if (u > n)
    {
        for (int i = 1; i <= n; i ++ ) cout << nums[i] << " ";
        cout << endl;
    }
    else
    {
        for (int i = 1; i <= n; i ++ )
            if (!st[i])
            {
                st[i] = true;
                nums[u] = i;
                dfs(u + 1, nums, st);
                st[i] = false;  // 恢复现场
            }
    }
}

int main()
{
    int nums[10];
    bool st[10] = {0};

    cin >> n;
    dfs(1, nums, st);

    return 0;
}



c_33
11天前
#include <iostream>

using namespace std;

int n, m;
int res = 0;

int fun(int x, int y) {
    if ( x == n && y == m ) res ++;
    else {
        if ( x < n ) fun(x+1, y);
        if ( y < m ) fun(x, y+1);
    }
}

int main() {

    cin >> n >> m;
    fun(0, 0);
    cout << res;

    return 0;
}


活动打卡代码 AcWing 822. 走方格

c_33
11天前
#include <iostream>

using namespace std;

int n, m;
int res = 0;

int fun(int x, int y) {
    if ( x == n && y == m ) res ++;
    else {
        if ( x < n ) fun(x+1, y);
        if ( y < m ) fun(x, y+1);
    }
}

int main() {

    cin >> n >> m;
    fun(0, 0);
    cout << res;

    return 0;
}


活动打卡代码 AcWing 821. 跳台阶

c_33
11天前
#include <iostream>

using namespace std;

int n;
int cnt = 0;

void fun(int k) {

    if ( k == n ) cnt ++;
    else if ( k < n ) {
        fun(k+1);
        fun(k+2);
    }
}

int main() {

    cin >> n;
    fun(0);
    cout << cnt;

    return 0;
}



c_33
11天前

选择排序法

#include <iostream>

using namespace std;

void sort(int a[], int l, int r) {
    int index;

    for ( int i = l; i <= r; i ++ ) {
        index = i;
        for ( int j = i+1; j <= r; j ++ ) 
            if ( a[j] < a[index] ) 
                index = j;
        swap(a[index], a[i]);
    }
}

int main() {
    int a[1000];
    int n, l, r;

    cin >> n >> l >> r;
    for ( int i = 0; i < n; i ++ ) cin >> a[i];
    sort(a, l, r);
    for ( int i = 0; i < n; i ++ ) cout << a[i] << " ";

    return 0;
}