大数加法【HDU 1002】
生活随笔
收集整理的這篇文章主要介紹了
大数加法【HDU 1002】
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
大數(shù)加法模板
一般的加法只要int類(lèi)型的兩數(shù)直接相加即可,大一點(diǎn)的數(shù)可以設(shè)為long long類(lèi)型,而超過(guò)長(zhǎng)整型的數(shù)則屬于大數(shù)問(wèn)題了,大數(shù)加法其實(shí)也比較簡(jiǎn)單,利用數(shù)組實(shí)現(xiàn)就可以啦:
主要思想如下:
(1)將大數(shù)以字符串形式輸入,并轉(zhuǎn)化為數(shù)組形式倒序存儲(chǔ)
(2)將兩數(shù)組對(duì)應(yīng)位相加,位數(shù)滿10進(jìn)1
(3)判斷最高位是否為0,輸出結(jié)果數(shù)組
代碼實(shí)現(xiàn):
#include<stdio.h>
#include<string.h>
int main()
{char s1[1005],s2[1005];int num1[1005],num2[1005];int len1,len2,i,j;memset(num1,0,sizeof(num1));memset(num2,0,sizeof(num2));printf("please int first number\n");scanf("%s",s1);printf("please int secound number\n");scanf("%s",s2);len1=strlen(s1);len2=strlen(s2);for(i=len1-1,j=0; i>=0 ; i--){num1[j]=s1[i]-48;j++;}for(i=len2-1,j=0; i>=0 ; i--){num2[i]=s2[j]-48;j++;}for(i=0; i<(len2>len1?len2:len1); i++){num1[i]+=num2[i];if(num1[i]>9){num1[i+1]+=1;num1[i]-=10;}}if(num1[i]){for(j=i; j>=0; j--)printf("%d",num1[j]);}else{for(j=i-1; j>=0; j--)printf("%d",num1[j]);}printf("\n");return 0;
}
【HDU 1002】 大數(shù)加法模板題,注意輸出格式控制就好~
代碼實(shí)現(xiàn):
#include<stdio.h>
#include<string.h>
int main()
{char s1[1005],s2[1005];int num1[1005],num2[1005];int len1,len2,i,j,t,k=1;scanf("%d",&t);while(t--){memset(num1,0,sizeof(num1));memset(num2,0,sizeof(num2));scanf("%s%s",s1,s2);len1=strlen(s1);len2=strlen(s2);for(i=len1-1,j=0; i>=0 ; i--){num1[j]=s1[i]-48;j++;}for(i=len2-1,j=0; i>=0 ; i--){num2[i]=s2[j]-48;j++;}for(i=0; i<(len2>len1?len2:len1); i++){num1[i]+=num2[i];if(num1[i]>9){num1[i+1]+=1;num1[i]-=10;}}if(k!=1) printf("\n");printf("Case %d:\n",k);k++;printf("%s + %s = ",s1,s2);if(num1[i]){for(j=i; j>=0; j--)printf("%d",num1[j]);}else{for(j=i-1; j>=0; j--)printf("%d",num1[j]);}printf("\n");}return 0;
}
總結(jié)
以上是生活随笔為你收集整理的大数加法【HDU 1002】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《OpenCV3编程入门》学习笔记6
- 下一篇: Python学习笔记1 Python基础