大数:用int 或 long long 存不下的数,大数的运算包括很多加减乘除等等,在此介绍一种很简单的大数,就是大数乘上一个int形的数。
思路:很简单就是模拟先把字符串反转,然后模拟人计算乘法的时候,先拿一个数记录下来进位,然后在下次乘之前加到结果上。
#include<bits/stdc++.h>
using namespace std;
string multi(string a,int k){
if(k == 0) return "0";
int len = a.length(),carry = 0;
reverse(a.begin(),a.end());
for(int i = 0 ; i < len ; i++){
int s = (a[i] - '0') * k +carry;
a[i] = s%10 +'0';
carry = s/10;
}
while(carry != 0){
a = a+(char)(carry %10 +'0');
carry /= 10;
}
reverse(a.begin(),a.end());
return a;
}
int main(){
string s;
string ss;
cin >> s;
for(int i = 0 ; i < s.length() ; i++){
if(s[i] >= '0' && s[i] <= '9' )
ss += s[i];
}
string result;
result = multi(ss,513);
cout << result << endl;
}