acm 大整數專題

2022-07-15 04:15:09 字數 3272 閱讀 1350

string類存大整數,之後用陣列來存大整數的每一位

vector stl容器 —— 向量

vector, 變長陣列,倍增的思想

size() 返回元素個數

empty() 返回是否為空

clear() 清空

front()/back()

push_back()/pop_back()

begin()/end()

支援下標運算子

支援比較運算,按字典序

string,字串

size()/length() 返回字串長度

empty()

clear()

substr(起始下標,(子串長度)) 返回子串

c_str() 返回字串所在字元陣列的起始位址

實現的**

string a,b;

vectora;

vectorb;

cin >> a >> b;

for(int i = a.size() - 1; i >= 0 ; i--) a.push_back(a[i] - '0' );

for(int i = b.size() - 1; i >= 0 ; i--) b.push_back(b[i] - '0' );

對於每一次加法

1.相加進製

2.相加不進製

模擬手算這個過程

vectoradd(vector&a,vector&b)

if(t) c.push_back(1);

return c;

}

#include using namespace std;

const int maxn = 1e5 + 10;

vectoradd(vector&a,vector&b)

if(t) c.push_back(1);

return c;

}int main()

cout << endl;

return 0;

}

c語言版本

從陣列的角度分析

bool cmp(vector&a, vector&b)

else if(a.size() < b.size())

// if( a.size() != b.size() ) return a.size() > b.size();

for(int i = a.size() ; i >= 0; i--)

return true;

}

if( cmp(a,b) ) 

}else

}

vectorsub(vector&a , vector&b)

while( c.back() == 0 && c.size() > 1 ) c.pop_back();

return c;

}

完整**

#include using namespace std;

bool cmp(vector&a, vector&b)

else if(a.size() < b.size())

// if( a.size() != b.size() ) return a.size() > b.size();

for(int i = a.size() ; i >= 0; i--)

return true;

}vectorsub(vector&a , vector&b)

while( c.back() == 0 && c.size() > 1 ) c.pop_back();

return c;

}int main()

}else

}cout << endl;

return 0;

}

模擬手算

完整**

**#include using namespace std;

vectormul(vectora, int b )

while(c.size() > 1 && c.back() == 0) c.pop_back();

return c;

}int main()

**

#include using namespace std;

vectordiv(vector&a,int b ,int &r)

reverse(c.begin() , c.end() );

while (c.size() > 1 && c.back() == 0) c.pop_back();

return c;

}int main()

大整數(指標專題)

輸入3個大整數,位數不超過100位,按從小到大的順序輸出這三個整數。要求定義並使用如下函式比較兩個大整數的大小。int cmp char a,char b 輸入有3行,每行輸入乙個大整數,位數不超過100位,輸入不含前導0。輸出3行,即排序後的3個大整數。1234567890123456789 99...

1169 大整數(指標專題)

輸入3個大整數,位數不超過100位,按從小到大的順序輸出這三個整數。要求定義並使用如下函式比較兩個大整數的大小。int cmp char a,char b 輸入有3行,每行輸入乙個大整數,位數不超過100位,輸入不含前導0。輸出3行,即排序後的3個大整數。1234567890123456789999...

1169 大整數(指標專題)

題目描述 輸入3個大整數,位數不超過100位,按從小到大的順序輸出這三個整數。要求定義並使用如下函式比較兩個大整數的大小。int cmp char a,char b 輸入 輸入有3行,每行輸入乙個大整數,位數不超過100位,輸入不含前導0。輸出 輸出3行,即排序後的3個大整數。樣例輸入 copy 1...