由于很多时候题目需要处理100位的整数,这样远远超过了C++能表示的范围,如果你是java,可以使用java中的专门处理多位数据的类。这里可以使用字符串运算的方法。之类题目会出现在进制运算中,一个多位字符串乘除一个整数。下面话不多说直接上代码。
//字符串运算
#include<iostream>
#include<string>
using namespace std;
//字符串除法
string Divide(string str,int x){
int remainder=0;//需要保存余数
for(int i=0;i<str.size();++i){
int current=remainder*10+str[i]-'0';
str[i]=current/x+'0';
remainder=current%x;
}
int pos=0;//查找首个非0下标
while(str[pos]=='0'){
pos++;
}
return str.substr(pos);//删除前置的多余0
}
//字符串乘法
string Multiple(string str,int x){
int carry=0;
for(int i=str.size()-1;i>=0;--i){
int current=x*(str[i]-'0')+carry;
str[i]=current%10+'0';
carry=current/10;
}
if(carry!=0){
str="1"+str;
}
return str;
}
int main()
{
string str;
cin>>str;
cout<<Divide(str,2)<<endl;
cout<<Multiple(str,1)<<endl;
return 0;
}
结果展示: