头像

老实人_6




离线:9小时前


最近来访(2)
用户头像
不念过去_努力向前
用户头像
种花家的兔兔


题目链接 https://www.acwing.com/problem/content/submission/code_detail/9934433/

错误的代码:

#include<iostream>
#include<vector>
using namespace std;

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;
    for(int i=0,t=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;*/
        if(A[i]>=B[i])C.push_back(A[i]-B[i]);
        else 
        {
            C.push_back(A[i]+10-B[i]);
            A[i+1]--;
        }

    }
    while(C.size()>1&&C.back()==0)C.pop_back();

    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)){
    auto C=sub(A,B);

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

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

    cout<<endl;

    return 0;
}

就把注释部分改成了下面的if else,感觉思路是一样的



活动打卡代码 AcWing 2058. 笨拙的手指

#include <iostream>
#include <cstring>
#include <algorithm>
#include <unordered_set>

using namespace std;

int get(string s, int b)  
{
    int res = 0;
    for (auto c: s)
        res = res * b + c - '0';
    return res;
}

int main()
{
    string a, b;
    cin >> a >> b;

    unordered_set<int> S;

    for (auto& c: a)
    {
        c ^= 1;
        S.insert(get(a, 2));
        c ^= 1;
    }

    for (auto& c: b)
    {
        char t = c;
        for (int i = 0; i < 3; i ++ )
            if (i + '0' != t)
            {
                c = i + '0';
                int x = get(b, 3);
                if (S.count(x))
                {
                    cout << x << endl;
                    return 0;
                }
            }
        c = t;
    }

    return 0;
}


活动打卡代码 AcWing 785. 快速排序

#include<iostream>
using namespace std;
const int N=1e6+10;
int q[N],n;
void sort(int q[],int l,int r){
    if(l>=r)return;
    int i=l-1,j=r+1,x=q[(l+r)/2];
    while(i<j){
        do i++ ;while(q[i]<x);
        do j--;while(q[j]>x);
        if(i<j){
            int t=q[i];q[i]=q[j];q[j]=t;
        }

    }   sort(q,l,j);sort(q,j+1,r);
}
int main()
{   
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    scanf("%d",&q[i]);
    sort(q,0,n-1);
    for(int i=0;i<n;i++)
    printf("%d ",q[i]);
      return 0;
    }