タイトル変換
新スーパーコンピュータの最初のユーザの一つは、BITチップディラーです。彼は、0〜333の拡張から3の権限の範囲を探索し、どのようにこれらの様々なデジタルサムを探求します。
チップは言う:このスーパーコンピュータ素晴らしいです。私はちょうどここティモシー結果を見てみたいです。「」(チップは、利用可能な3階に三通りいったん新しいアパート、レモンスカイアパートに移動しました)。
エントリー
テキストの入力100本のラインまでを含む、テキストの各行はVeryLongIntegerを含みます。VeryLongIntegerの100文字以下の長さ、及び数字のみ(なしVeryLongInteger陰性)。
最終的な入力ライン自体は、単一の行のゼロを含んでいます
思考
押して、行が文字列に読み込まれ、その後、ベクターに回すために1つの場所から彼を連れて行った、そして我々は合計ビットもう少し一定数よりもトラバース場合、MAXSIZEはその後、最大桁数です続行します。キャリーアップを保持したままそして、結果ベクトルに継続
for (int i = 0; i < maxSize; i++) {//遍历每一位
sum = mod;
for (int j = 0; j < cnt; j++) {//遍历每一个数字
if (i > v[j].size() - 1)continue;//超过了v[j]的位
sum += v[j][i];
}
mod = sum / 10; sum = sum % 10;
res.push_back(sum);
}
forループの終了後、最終のキャリービットから処理されます
while (mod > 0) {//来自最后一位的进位
sum = mod % 10, mod /= 10;
res.push_back(sum);
}
我々は統一された出力をリード無視するときに0111ので、この数字は、の形の主要0で入力することができる0
while (res[cnt] == 0)cnt--;//忽略前导0
チップ
- 文字列型ファイル用のgetline関数は、ヘッダを含める必要があります
#include<string.h>
- 先頭にゼロを持っている番号を入力します。。。注意を払う必要があります
#include<iostream>
#include<iomanip>
#include<algorithm>
#include<vector>
#include<string.h>
#include<queue>
#include<stdio.h>
#include<string>
using namespace std;
vector<int>v[200], res;
string str;
int main() {
int cnt = 0;unsigned maxSize = 0;
while (getline(cin, str)) {
if (str == "0")break;
int len = str.size();
for (int i = len - 1; i >= 0; i--) {//从个位到末位放入vector
v[cnt].push_back(str[i] - '0');
}
cnt++;
}
for (int i = 0; i < cnt; i++)maxSize = max(maxSize, v[i].size());
int sum = 0, mod = 0;//这一位的和,上一位的进位
for (int i = 0; i < maxSize; i++) {//遍历每一位
sum = mod;
for (int j = 0; j < cnt; j++) {//遍历每一个数字
if (i > v[j].size() - 1)continue;//超过了v[j]的位
sum += v[j][i];
}
mod = sum / 10; sum = sum % 10;
res.push_back(sum);
}
while (mod > 0) {//来自最后一位的进位
sum = mod % 10, mod /= 10;
res.push_back(sum);
}
cnt = res.size() - 1;
while (res[cnt] == 0)cnt--;//忽略前导0
for (int i = 0; i <= cnt; i++)cout << res[res.size() - i - 1];
cout << endl;
}