Tháng Hai 1, 2019
Cộng số lớn
Đề bài: Cho 2 số nguyên a, b có 0 <= a, b <= 1 tỷ tỷ tỷ. Tính và in ra tổng của 2 số.
Đầu vào: Dòng đầu tiên chứa số nguyên n là số lượng test. n cặp dòng tiếp theo lần lượt là các số a, b của mỗi test
Đầu ra: n dòng, mỗi dòng chứa một số duy nhất là tổng của 2 số tại test tương ứng.
Ví dụ:
input 2 3 2 1 3 output: 5 4
Bạn chưa đăng nhập? Đăng nhập để Submit ngay!
9 Comments
Add a Comment
Bạn phải đăng nhập để gửi phản hồi.
Ít Testcase quá.
Em mới học code, bác cho thêm nhiều testcase số lớn đi ạ.
Thế là đủ rồi. 🙂 Người biết làm sẽ làm đúng ngay còn không sẽ sai.
#include
#include
#include
struct bignum
{char num[100];
}
bignum[100];
void chuanA(char a[100], char b[100])
{ int k,i;
k=strlen(b)-strlen(a);
while(strlen(a)=0;i–)
{a[i+1]=a[i];}}
for(i=0;i<=k-1;i++)
{a[i]='0';}
}
void chuanB(char a[100], char b[100])
{ int k,i;
k=strlen(a)-strlen(b);
while(strlen(b)=0;i–)
{b[i+1]=b[i];}}
for(i=0;i<=k-1;i++)
{b[i]='0';}
}
void ketqua(char a[100], char b[100])
{int c[100];
int i,k,carry;
if(strlen(a)strlen(b))
{chuanB(a,b);}
k= strlen(a)-1;
carry=0;
for(i=strlen(a)-1;i>=0;i–)
{a[i]=a[i]-‘0’;
b[i]=b[i]-‘0’;
c[i]=a[i]+b[i]+carry;
if(c[0]>=10)
{c[i]=c[0];
break;}
carry=c[i]/10;
c[i]=c[i]%10;
}
for(i=0;i<=k;i++)
{printf("%d",c[i]);}}
int main()
{ int n,i,c[100];
//printf("n=");
scanf("%d",&n);
for (i=1;i<=2*n;i=i+2)
{scanf("%s",&bignum[i].num);
scanf("%s",&bignum[i+1].num);
if(strlen(bignum[i].num)strlen(bignum[i+1].num))
{chuanB(bignum[i].num,bignum[i+1].num);}}
//printf(“KETQUA\n”);
for (i=1;i<=2*n;i=i+2)
{ketqua(bignum[i].num , bignum[i+1].num);
printf("\n");}
getch();
return(0);}
ktra lai code nay giup em voi, em thử trong visual là đúng
Nhìn code của bạn chán đời quá. Bạn nhìn xem test ouput và your output khác nhau thế nào nhé.
B chơi tới chuỗi luôn à :))
bài hay lắm anh^^
n = int(input())
for i in range(0,n):
a = int(input())
b = int(input())
print(a+b)
vậy ổn không anh
cứ nộp nó sẽ chấm nhé.
#include
#include
#include
void cong(char a[], char b[])
{
char c[50];
bool remember = false;
int lena = strlen(a), lenb = strlen(b);
for (int i = 0; i 0)
{
temp++;
}
if (temp > 9)
{
temp = temp – 10;
remember = true;
}
else
{
remember = false;
}
c[i] = temp + ‘0’;
}
for (int i = 0; i 0)
{
temp++;
}
if (temp > 9)
{
temp = temp – 10;
remember = true;
}
else
{
remember = false;
}
c[lenb + i] = temp + ‘0’;
}
if (remember)
{
c[lena] = ‘1’;
}
for (int i = 0; i ‘9’ || c[i] < '0')
{
c[i] = '\0';
}
}
for (int i = 0; i < strlen(c) / 2; i++)
{
char k;
k = c[i];
c[i] = c[strlen(c) – i – 1];
c[strlen(c) – i – 1] = k;
}
printf("%s\n", c);
}
int main()
{
int n, count = 0;
scanf("%d\n", &n);
typedef struct number
{
char a[50];
char b[50];
} number;
number str[n];
for (int i = 0; i < n; i++)
{
fgets(str[i].a, 50, stdin);
fgets(str[i].b, 50, stdin);
}
for (int i = 0; i strlen(str[i].b))
{
cong(str[i].a, str[i].b);
}
else
{
cong(str[i].a, str[i].b);
}
}
return 0;
}
anh Ơi, em chạy dev C++ và VSC thì đúng nhưng chạy trên đây thì cho được 5 dòng trắng, em không hiểu lí do từ đâu ạ. Mong anh giúp