우주 무적 덧셈 기

제목 설명:
지구 인 들 은 십 진법 을 사용 하 는 습관 이 있 고, 기본적으로 한 숫자의 모든 사람 은 십 진법 이다.그리고 PAT 스타 들 이 걸 어 놓 은 세계 에서 모든 숫자의 한 분 한 분 은 서로 다른 진법 으로 되 어 있 는데 이런 신기 한 숫자 를 'PAT 수' 라 고 부른다.PAT 별 마다 여러분 의 숫자 를 기억 해 야 합 니 다. 예 를 들 어 '... 0527' 은 최 하위 가 7 진수, 2 위 가 2 진수, 3 위 가 5 진수, 4 위 가 10 진수 등 입 니 다.각 비트 의 진수 d 또는 0 (10 진법 표시) 또는 [2, 9] 구간 내의 정수.이론 적 으로 이 진 제 표 는 무한 여러 자리 의 숫자 를 포함해 야 하지만 실제 응용 에서 출발 하여 PAT 스타 들 은 보통 20 위 권 만 기억 하면 충분 합 니 다. 앞으로 여러분 은 기본적으로 10 진법 입 니 다.
이런 디지털 시스템 에 서 는 간단 한 덧셈 연산 도 쉽 지 않다.예 를 들 어 대응 하 는 진 표 '0527' 은 '6203 + 415' 를 어떻게 계산 해 야 합 니까?우 리 는 먼저 최저 위 를 계산 해 야 한다. 3 + 5 = 8;최 하위 가 7 진법 이기 때문에 우 리 는 1 과 1 의 진 위 를 얻 었 다.2 위 는 0 + 1 + 1 (진) = 2;이 자 리 는 2 진법 이기 때문에 우 리 는 0 과 1 개의 진 을 얻 었 다.3 위 는: 2 + 4 + 1 (진) = 7;이 자 리 는 5 진법 이기 때문에 우 리 는 2 와 1 개의 진 을 얻 었 다.4 위 는: 6 + 1 (진) = 7;이 분 은 10 진법 이기 때문에 우 리 는 7 을 얻 을 수 있 습 니 다.마지막 으로 우 리 는 6203 + 415 = 7201 을 얻 었 다.
입력 설명:
입력 은 먼저 첫 줄 에 N 비트 의 진 표 (0 < N ≤ 20) 를 제시 하여 차 로 돌아 가 는 것 으로 끝 납 니 다.이 어 두 줄 은 줄 마다 N 자 리 를 넘 지 않 는 마이너스 가 아 닌 PAT 수 를 준다.
출력 설명:
한 줄 에 두 개의 PAT 수의 합 을 출력 합 니 다.
코드
#include
#include
char s[25];
char a[25],b[25],c[25];
int f1(char c)
{
    if(c=='0')
        return 10;
    else
        return c-'0';
}

int reverse(char *s)
{
    int len=strlen(s);
    char t;
    for(int i=0,j=len-1;ireturn len;
}

void ca(char *a,char*b)
{
    reverse(s);
    memset(c,'0',25);
    int len1=reverse(a);
    int len2=reverse(b);
    a[len1]='0';
    b[len2]='0';
    int max=len1>len2?len1:len2;
    int sum=0;
    for(int i=0;i'0'+b[i]-'0'+sum)%(int)f1(s[i])+'0';
        sum=(a[i]-'0'+b[i]-'0'+sum)/f1(s[i]);
    //  printf("%d----
",sum);
} if(sum!=0) { c[max]=sum+'0'; max+=1; } c[max]='\0'; int len=reverse(c); int index=0; while(c[index]=='0') index++; for(;indexindex++) printf("%c",c[index]); printf("
"
); } int main() { memset(a,'0',25); memset(b,'0',25); gets(s); gets(a); gets(b); ca(a,b); }

좋은 웹페이지 즐겨찾기