算法【模板】
正好最近和队友决定再过一遍基础,那就用这个博客这个记录一下吧
part one : 高精度部分
#include<iostream> #include<vector> using namespace std; const int N=100010; string a,b; vector<int> A,B; vector<int> add(vector<int> &A,vector<int> &B){ vector<int> C; if(A.size()<B.size()) return add(B,A); int t=0; for(int i=0;i<A.size();i++){ 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; } signed main(){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); 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'); auto C = add(A,B); for(int i=C.size()-1;i>=0;i--) cout<<C[i]; return 0; }
#include<iostream> #include<vector> using namespace std; string a,b; vector<int> 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(); return C; } signed main(){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); 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); cout<<"-"; for(int i=C.size()-1;i>=0;i--) cout<<C[i]; } return 0; }
#include<iostream> #include<vector> using namespace std; string a,b; vector<int> A,B; vector<int> mul(vector<int> &A,vector<int> &B){ vector<int> C(A.size()+B.size()+5,0); for(int i=0;i<A.size();i++) for(int j=0;j<B.size();j++) C[i+j]+=A[i]*B[j]; int t=0; for(int i=0;i<C.size();i++){ t+=C[i]; C[i]=t%10; t/=10; } while(C.size()>1 && C.back()==0) C.pop_back(); return C; } signed main(){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); 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'); auto C = mul(A,B); for(int i=C.size()-1;i>=0;i--) cout<<C[i]; return 0; }
#include<iostream> #include<vector> #include<algorithm> using namespace std; string a; int b,r=0; vector<int> A; vector<int> div(vector<int> &A,int b,int &r){ vector<int> C; int t=0; for(int i=0;i<A.size();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(); return C; } signed main(){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); cin>>a>>b; for(int i=0;i<a.size();i++) A.push_back(a[i]-'0'); auto C = div(A,b,r); for(int i=C.size()-1;i>=0;i--) cout<<C[i]; cout<<"\n"<<r<<endl; return 0; }
part tow : 快速排序部分
#include<iostream> using namespace std; const int N=100010; int n,q[N]; void quick_sort(int q[],int l,int r){ if(l>=r) return; int x=q[(l+r)>>1],i=l-1,j=r+1; while(i<j){ do i++; while(q[i]<x); do j--; while(q[j]>x); if(i<j) swap(q[i],q[j]); } quick_sort(q,l,j); quick_sort(q,j+1,r); } signed main(){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); cin>>n; for(int i=0;i<n;i++) cin>>q[i]; quick_sort(q,0,n-1); for(int i=0;i<n;i++) cout<<q[i]<<" "; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具