HDU 1047(大數相加)(陣列模擬)
阿新 • • 發佈:2019-02-12
這個題目啊,其實紮實的做的話應該並不難,然而我想看是統一用字串,還是再轉化成陣列,然後看了別人的題解,傻冒一樣的像別人一樣謝了getchar();真是傻冒了,我用的scanf("%s",str),跟它有個什麼關係,難道是這幾天有點急功近利,所以才著急看別人的思路,淡定啊,自己的才是最好的!!
只需要用一個數組,將每次輸入的字串轉化並加上就行了!(最後輸出格式也要注意下)
程式碼如下:
//HDU 1047 陣列模擬大數 #include<iostream> #include<cstdio> #include<cstring> using namespace std; int main() { int n,i,j; cin>>n; while(n--) { char str[110]; int sum[110]={0};//如果放到開頭定義,別忘了memset(); while(~scanf("%s",str)&&str[0]!='0') { for(i=strlen(str)-1,j=0;i>=0;i--,j++) { sum[j]+=str[i]-48;//轉化成數字並加到陣列上 if(sum[j]>9)//大於9進位 { sum[j]-=10; sum[j+1]+=1; } } } for(i=105;i>=0;i--) if(sum[i])//找到首位數字 break; for(j=i;j>=0;j--) cout<<sum[j]; if(i<0) cout<<0; cout<<endl; if(n) cout<<endl; } return 0; }