424 - Integer Inquiry
사고방식: 먼저 모든 숫자 를 오른쪽으로 정렬 하고 왼쪽 에 부족 한 부분 은 0 을 보충 한 다음 에 일반 덧셈 에 따라 계산 하면 된다.
요점: 사용 sprintf 에서 int 를 char [] 로 전환 합 니 다.
제목:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=97&page=show_problem&problem=365
코드:
# include <iostream>
# include <string>
# include <cstdio>
# include <cstring>
# include <vector>
# include <algorithm>
# include <cctype>
# include <iterator>
using namespace std;
// sprintf int char[]
// , lines
string sumBigInt(const vector<string>& lines, const int maxSize){
string result = "";
int carry = 0; //
for(int i=maxSize-1; i>=0; i--){
int sum = carry;
for(int j=0; j<lines.size(); j++){
char c = lines[j][i];
sum += atoi(&c);
}
// ,
if( i == 0){
char a[10];
sprintf(a, "%d", sum);
result = a + result;
break;
}
//
char a[2];
sprintf(a, "%d", sum % 10);
result = a + result;
//
carry = sum / 10;
}
return result;
}
// , line , , 0
void alignRight(vector<string>& lines, const int maxSize){
for(int i=0; i<lines.size(); i++){
if (lines[i].size() < maxSize) {
string longer(maxSize, '0');
copy(lines[i].begin(), lines[i].end(),
longer.begin() + (maxSize - lines[i].size()) );
lines[i] = longer;
}
}
}
int main(int argc, char const *argv[])
{
#ifndef ONLINE_JUDGE
freopen ("424_i.txt", "r", stdin);
freopen ("424_o.txt", "w", stdout);
#endif
vector<string> lines;
int maxSize = 0;
string line;
getline(cin, line);
while ( (!cin.eof()) && line != "0" ) {
maxSize = line.size() > maxSize ? line.size() : maxSize;
lines.push_back(line);
getline(cin, line);
}
alignRight(lines, maxSize);
cout << sumBigInt(lines, maxSize) << endl; // endl WA
return 0;
}
환경: C++ 4.5.3 - GNU C++ Compiler with options: -lm -lcrypt -O2 -pipe -DONLINE_JUDGE
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
cocos2d Lua 학습(一)ios에서 루아 함수 호출 및 전참 방법 lua 코드: 출력 결과: lua 호출 C++ 방법: add 함수: lua 코드: 출력 결과: 함수를 호출합니다. 함수를 호출하려면 다음 협의를 따르십시오. 우선, 호출할 함...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.