怎么在C++中实现string的取模运算?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

在德清等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、
网站制作 网站设计制作按需网站设计,公司网站建设,企业网站建设,
成都品牌网站建设,
营销型网站建设,成都外贸网站建设公司,德清网站建设费用合理。
项目要点
1.大数指的是远超long long int的数据
2.将大数用矩阵进行存储,并通过矩阵实现运算
3.本人采用字符串进行存储,应注意char的特点
比如:char a=161;
cout<<(int)a;
此时会输出-95,而不是161,char类型首个比特位是作为正负号的
取模运算其实和取余差不多,主要是取模在负数方面与取余不同
需要用到之前博客提到的减法运算minus
核心思想:
先来看自然数的取模运算
与取余相同,与除法思路相同
比如861mod21=861%21
先用86去减21 知道数值小于21时停止 也就是2
再添加上下一位,就变成了21
如果这个数大于等于21,则再用这个数减去它
21-21=0,当已经取出最后一位,而且这个数字小于21时停止
即得出861%21=0
接下来来看负整数的情况
假设有一个正整数k,a,(-k) mod a+k mod a=0 mod a
(-k) mod a=0 mod a - k mod a
因为k mod a 所以(-k) mod a=a - k mod a
即一个负整数的模a,就为a-其绝对值的模a
运行截图及代码如下:

#include
#include
#include
using namespace std;
#define n 10
string dezero(string a)//用来去掉正数前面的0,也就是说可以输入000001类似这样的数字
{
long int i;
for(i=0;i48) break;
}
if(i==a.length()) return "0";
a.erase(0,i);
return a;
}
int judge(string a,string b)//判断两个正数的大小
{
if(a.length()>b.length()) return 1;
if(a.length()b.at(i)) return 1;
if(a.at(i)=48&&c2.at(i)<=57) c2.at(i)-=48;
if(c2.at(i)>=97&&c2.at(i)<=122) c2.at(i)-=87;
}
for(i=0;i=48&&c1.at(i)<=57) c1.at(i)-=48;
if(c1.at(i)>=97&&c1.at(i)<=122) c1.at(i)-=87;
}
for(i=0;i=0;i--)
{
if(c1.at(i)>0) break;
}
c1.erase(i+1,c1.length());
for(i=0;i=10) c1.at(i)+=87;
if(c1.at(i)<10) c1.at(i)+=48;
}
reverse(c1.begin(),c1.end());
if(j==-1) c1.insert(0,d);
return c1;
}
string mod(string a,string b)//取模运算
{
long int i,j=0;
string c1,c2,c3,d;
if(a.at(0)=='-') j=1;
if(judge(a,b)==0) return "0";
if(judge(a,b)==-1)
{
return a;
}
c1=dezero(a);
c2=dezero(b);
d="";
for(i=0;i=0)
{
d=minus(d,b);
d=dezero(d);
}
}
if(j==1) d=minus(b,d);
return d;
}
int main()
{
string a,b;
while(cout<<"input:"&&cin>>a>>b)
{
cout<<"output:"<看完上述内容,你们掌握怎么在C++中实现string的取模运算的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联网站建设公司行业资讯频道,感谢各位的阅读!
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享标题:怎么在C++中实现string的取模运算-创新互联
本文URL:http://cdkjz.cn/article/dhdsii.html