“常用”函数
2026-05-25 20:20:24
发布于:浙江
这个帖子记载了一些“常用”函数 (虽然有一些不那么常用)
1.判断质数
bool prime(int n){
if(n<2)return false;
if(n!=2&&n%2==0)return false;
for(int i=3;i*i<=n;i+=2){
if(n%i==0)return false;
}
return true;
}
2.判断回文
bool huiwen(int n){
int m=0;
while(n!=0){
m=m*10+n%10;
n/=10;
}
return m==n;
}
3.高精加
string jia(string s1,string s2){
int a[110],b[110],c[210],len1=s1.size(),len2=s2.size(),len3=max(len1,len2);
for(int i=0;i<len1;i++){
a[i]=s1[len1-i-1]-'0';
}
for(int i=0;i<len2;i++){
b[i]=s2[len2-i-1]-'0';
}
int x=0;
for(int i=0;i<len3;i++){
c[i]=a[i]+b[i]+x;
x=c[i]/10;
c[i]%=10;
}
c[len3]=x;
if(c[len3]==0)len3--;
int s3="";
for(int i=len3;i>=0;i--){
s3+=c[i]+'0';
}
return s3;
}
4.高精减
string jian(string s1,string s2){
int a[110]={0},b[110]={0},c[110]={0},k=100;
int len1=s1.size(),len2=s2.size();
if(len1<len2||len1==len2&&s1<s2){
swap(s1,s2);
swap(len1,len2);
cout<<"-";
}
for(int i=0;i<=len1-1;i++){
a[len1-i]=s1[i]-'0';
}
for(int i=0;i<=len2-1;i++){
b[len2-i]=s2[i]-'0';
}
for(int i=1;i<=max(len1,len2);i++){
c[i]=c[i]+a[i]-b[i];
if(c[i]<0){
c[i+1]--;
c[i]+=10;
}
}
while(c[k]==0&&k>1){
k--;
}
string s3="";
for(int i=k;i>=1;i--){
s3+=c[i]+'0';
}
return s3;
}
5.高精乘
string cheng(string s1,string s2){
int a[300]={0},b[300]={0},c[600]={0},len1,len2,len3;
len1=s1.size();
len2=s2.size();
len3=len1+len2;
for(int i=0;i<len1;i++){
a[i]=s1[len1-1-i]-'0';
}
for(int i=0;i<len2;i++){
b[i]=s2[len2-1-i]-'0';
}
for(int i=0;i<len1;i++){
for(int j=0;j<len2;j++){
c[i+j]+=a[i]*b[j];
if(c[i+j]>=10){
c[i+j+1]+=c[i+j]/10;
c[i+j]%=10;
}
}
}
string s3="";
while(c[len3]==0&&len3>0)len3--;
for(int i=len3;i>=0;i--){
s3+=c[i]+'0';
}
return s3;
}
(还会更新)
大家有“常用”的函数的也可以评论一下(正经一点!!!)
如果有用我会加进来。
这里空空如也


















有帮助,赞一个