기초 연습 고밀도 덧셈
3226 단어 블 루 브리지 컵 연습
두 정수 a 와 b 를 입력 하고 이 두 정수 의 합 을 출력 합 니 다.a 와 b 는 모두 100 명 을 넘 지 않 는 다.
알고리즘 설명
a 와 b 가 비교적 크기 때문에 언어의 표준 데이터 형식 으로 직접 저장 할 수 없습니다.이런 문제 에 대해 서 는 일반적으로 배열 로 처리한다.하나의 배열 A,A[0]를 a 의 한 자 리 를 저장 하 는 데 사용 하고 A[1]는 a 의 10 자 리 를 저장 하 는 데 사용 하 는 것 으로 유추 된다.같은 배열 B 로 b 를 저장 할 수 있다.계산 c = a + b 일 때 먼저 A[0]와 B[0]를 더 하고 진 위 를 발생 시 키 면 진 위 를 r 에 저장 하고 화 된 한 자릿수 를 C[0],즉 C[0]는(A[0]+B[0])%10 에 저장한다.그 다음 에 A[1]와 B[1]을 더 하면 낮은 위치 에서 올 라 온 값 r 도 더 해 야 한다.즉,C[1]는 A[1],B[1]와 r 세 개의 수의 합 이 어야 한다.만약 에 또 진 위 를 만 들 면 새로운 진 위 를 r 에 저장 하고 한 자 리 를 C[1]에 저장 할 수 있다.이런 유추 에 의 하면 C 의 모든 위 치 를 구 할 수 있다.마지막 으로 C 를 출력 하면 됩 니 다.
입력 형식
입력 은 두 줄 을 포함 하고 첫 번 째 행 위 는 마이너스 정수 a 가 아니 며 두 번 째 행 위 는 마이너스 정수 b 가 아 닙 니 다.두 정수 모두 100 위 를 넘 지 않 고 두 수의 최고 위 는 0 이 아니다.
출력 형식
한 줄 출력 + b 의 값.
샘플 입력
20100122201001221234567890 2010012220100122
샘플 출력
20100122203011233454668012
해법 1:
/* , , */
#include
#include
using namespace std;
int main()
{
char a[102],b[102];
char c[110];//
//
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
cin >> a;
cin >> b;
int sc = 0;
int k = 0;
int la = strlen(a);
int lb = strlen(b);
if(la > lb) //
{
for(int i = la-1,j = lb-1;j >= 0;--j,--i)
{
c[k++] = (a[i] + b[j] - '0' * 2 + sc) % 10 + '0';// , ‘0’
sc = (a[i] + b[j] - '0' * 2 + sc) / 10; //
}
for(int i = la - lb - 1;i >= 0;--i)
{
c[k++] = (a[i] - '0' + sc) % 10 + '0';
sc = (a[i] - '0' + sc) / 10;
}
if(sc) // ,
{
c[k] = sc + '0';
}
for(int i = strlen(c)-1;i >= 0;--i)
{
cout<= 0;--j,--i)
{
c[k++] = (a[i] + b[j] - '0' * 2 + sc) % 10 + '0';
sc = (a[i] + b[j] - '0' * 2 + sc) / 10;
}
for(int i = lb - la - 1;i >= 0;--i)
{
c[k++] = (b[i] - '0' + sc) % 10 + '0';
sc = (b[i] - '0' + sc) / 10;
}
if(sc)
{
c[k] = sc + '0';
}
for(int i = strlen(c)-1;i >= 0;--i)
{
cout<
해법 2:
#include
#include
#include //stringstream
using namespace std;
int main()
{
char a[102],b[102];
int c[110];
stringstream str; // , cin,cout
int sa[102],sb[102];
memset(sa,0,sizeof(sa));
memset(sb,0,sizeof(sb));
memset(c,0,sizeof(c));
cin >> a;
cin >> b;
int la = strlen(a);
int lb = strlen(b);
for(int i = la-1;i >= 0;--i)
{
str << a[i];
str >> sa[la-1-i];
str.clear();
}
for(int i = lb-1;i >= 0;--i)
{
str << b[i];
str >> sb[lb-1-i];
str.clear();
}
int sc = 0;
int k = 0;
int len; //
if(la > lb)
{
len = la;
}
else
{
len = lb;
}
int i;
for(i = 0;i < len;++i)
{
c[i] = (sa[i] + sb[i] + sc) % 10;
sc = (sa[i] + sb[i] + sc) / 10;
}
int j = i - 1;
if(sc) //
{
c[i] = 1;
j = i;
}
for(int k = j;k >= 0;--k)
{
cout<
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
블 루 브리지 컵 싱글 칩 마이크로컴퓨터 CT 107 D 디지털 튜브 디 스 플레이블 루 브리지 컵 싱글 칩 마이크로컴퓨터 CT 107 D 디지털 튜브 디 스 플레이 정의 display. 해당 c 파일 정의 프로젝트 템 플 릿:https://download.csdn.net/download/qq_4...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.