Runtime Error
Received signal 6:
Aborted/IOT trap.
本地运行没问题,提交上去全RE,是STL中内存分配的问题吗?
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<deque>
#include<fstream>
#include<iomanip>
#include<iostream>
#include<limits>
#include<map>
#include<numeric>
#include<queue>
#include<sstream>
#include<stack>
#include<string>
#include<vector>
//#define int long long
using namespace std;
template<typename _OutputIterator>
_OutputIterator input(_OutputIterator __first, _OutputIterator __last){
for(_OutputIterator __i=__first;__i<__last;++__i){
cin>>*__i;
}
return __first;
}
template<typename _InputIterator>
void print(_InputIterator __first, _InputIterator __last, string __inter = " "){
for(_InputIterator __i=__first;__i<__last;++__i){
cout<<*__i<<__inter;
}
}
void SpeedUpIOstream
(
bool sync = false,
basic_ostream<char, struct char_traits<char> > *itie = nullptr,
basic_ostream<char, struct char_traits<char> > *otie = nullptr
){
ios::sync_with_stdio(sync);
cin.tie(itie);
cout.tie(otie);
}
string times(string s1,string s2){
int n1=s1.size(),n2=s2.size();
reverse(s1.begin(),s1.end());
reverse(s2.begin(),s2.end());
vector<int> a(s1.begin(),s1.end());
vector<int> b(s2.begin(),s2.end());
typedef typename vector<int>::iterator iter;
for(iter i=a.begin();i<a.end();i++) *i-=48;
for(iter i=b.begin();i<b.end();i++) *i-=48;
vector<int> c(n1+n2);
int flag=0;
for(int i=0;i<n1;i++){
flag=0;
for(int j=0;j<n2;j++){
c[i+j]+=a[i]*b[j]+flag;
flag=c[i+j]/10;
c[i+j]%=10;
}
c[i+n2]+=flag;
}
while(c.back()==0){
c.pop_back();
}
reverse(c.begin(),c.end());
for(iter i=c.begin();i<c.end();i++) *i+=48;
return string(c.begin(),c.end());
}
string plus(string s1,string s2){
int n1=s1.size(),n2=s2.size();
int n=max(n1,n2);
reverse(s1.begin(),s1.end());
reverse(s2.begin(),s2.end());
vector<int> a(s1.begin(),s1.end());
vector<int> b(s2.begin(),s2.end());
typedef typename vector<int>::iterator iter;
for(iter i=a.begin();i<a.end();i++) *i-=48;
for(iter i=b.begin();i<b.end();i++) *i-=48;
a.resize(n);
b.resize(n);
vector<int> c(n);
int flag=0;
for(int i=0;i<n;i++){
c[i]=a[i]+b[i]+flag;
flag=c[i]>9;
c[i]%=10;
}
c.push_back(flag);
while(c.back()==0){
c.pop_back();
}
reverse(c.begin(),c.end());
for(iter i=c.begin();i<c.end();i++) *i+=48;
return string(c.begin(),c.end());
}
string devide(string a,int b){
if(a=="0"){
return string("0");
}
int alen=a.length();
a+='\0';
string c;
long long num=a[0]-48;
for(int i=0;i<alen;i++){
c+=num/b+48;
num%=b;
num*=10;
num+=a[i+1]-48;
}
while(c.front()=='0'&&c.size()>1){
c.erase(0,1);
}
return string(c);
}
int mod(string a,int b){
int m=0;
typedef typename string::iterator iter;
for(iter i=a.begin();i<a.end();i++){
m=(m*10+(*i-48))%b;
}
return m;
}
#define plus ::plus
string s8,s10,s16;
const string bits="0123456789abcdef";
int main(){
// string a;
// int b;
// cin>>a>>b;
// cout<<mod(a,b)<<endl;
SpeedUpIOstream();
cin>>s8;
while(!s8.empty()){
s10=times("8",s10);
s10=plus(s8.substr(0,1),s10);
s8.erase(0,1);
}
// cout<<s10<<endl;
while(s10!="0"){
s16.push_back(bits[mod(s10,16)]);
s10=devide(s10,16);
}
reverse(s16.begin(),s16.end());
cout<<s16;
return 0;
}