大数加法【HDU 1002】
生活随笔
收集整理的這篇文章主要介紹了
大数加法【HDU 1002】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
大數加法模板
一般的加法只要int類型的兩數直接相加即可,大一點的數可以設為long long類型,而超過長整型的數則屬于大數問題了,大數加法其實也比較簡單,利用數組實現就可以啦:
主要思想如下:
(1)將大數以字符串形式輸入,并轉化為數組形式倒序存儲
(2)將兩數組對應位相加,位數滿10進1
(3)判斷最高位是否為0,輸出結果數組
代碼實現:
#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】 大數加法模板題,注意輸出格式控制就好~
代碼實現:
#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;
}
總結
以上是生活随笔為你收集整理的大数加法【HDU 1002】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《OpenCV3编程入门》学习笔记6
- 下一篇: Python学习笔记1 Python基础