Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdbool.h>
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
- #define MAX 1001
- /*
- Zadatak je sa kursa "Uvod u algoritme" sa sajta petlja.org
- lekcija: Uvod
- zadatak: sabiranje 4
- max vreme: 1s
- max memorija: 1000mb
- ulaz: stdin
- izlaz: stdout
- 1) U prvom redu standardnog ulaza se nalazi broj A. U drugom redu se nalazi broj B.
- 2) U prvom redu standardnog izlaza ispisati zbir brojeva A i B.
- 3) Ograničenja: -10^1000 <= A, B <= 10^1000
- */
- int main(){
- char A[MAX], B[MAX];
- int C[MAX];
- scanf("%s", A);
- scanf("%s", B);
- int nA = strlen(A);
- int nB = strlen(B);
- char tmp;
- int i, j;
- i = 0;
- j = nA - 1;
- // obrtanje oba stringa:
- while(i <= j){
- tmp = A[i];
- A[i] = A[j];
- A[j] = tmp;
- i++;
- j--;
- }
- i = 0;
- j = nB - 1;
- while(i <= j){
- tmp = B[i];
- B[i] = B[j];
- B[j] = tmp;
- i++;
- j--;
- }
- int prenos = 0;
- int tmp2;
- i = 0;
- j = 0;
- int k = 0;
- // sabiranje cifru po cifru i dodavanje u novi niz
- while(1){
- if(i < nA && j < nB){
- tmp2 = (A[i] - '0') + (B[j] - '0') + prenos;
- if(tmp2 > 9){
- tmp2 %= 10;
- prenos = 1;
- }
- else
- prenos = 0;
- i++;
- j++;
- }
- else if(j >= nB){
- tmp2 = (A[i] - '0') + prenos;
- if(tmp2 > 9){
- tmp2 %= 10;
- prenos = 1;
- }
- else
- prenos = 0;
- i++;
- }
- else if(i >= nA){
- tmp2 = (B[j] - '0') + prenos;
- if(tmp2 > 9){
- tmp2 %= 10;
- prenos = 1;
- }
- else
- prenos = 0;
- j++;
- }
- C[k] = tmp2;
- k++;
- if(i >= nA && j>= nB)
- break;
- }
- if(prenos == 1){
- C[k] = 1;
- k++;
- }
- // printanje niza od pozadi
- for(i = k-1; i>=0; i--)
- printf("%d", C[i]);
- printf("\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement