PAT 1001 A+B
-
代碼鏈接:傳送門
-
題目鏈接:傳送門
-
題目簡述:
- 給定兩個值a,b;
- 范圍-1000000 <= a, b <= 1000000;
- 按指定格式輸出a+b的結果,例:-99,991;
-
解題思路:
-
一、明確范圍
- a+b在正負兩百萬內;
- int夠用,不用高精度;
-
二、明確格式
- 三位一起;
- 視最后采取的代碼寫法注意可能需要補零;
- 負號可以提前判定,相當於只要考慮正數;
-
三、采取措施:
- 計算a+b的結果c,處理掉負號;
- 按c按1000進制將結果存儲在數組中;
- 輸出最高位;
- 剩下的每位:輸出一個 “,” 號,再輸出該位(補零)
-
四、潛在問題:
- 視代碼的具體實現方式可能在處理0的時候會出問題;
- 對應措施:打完代碼特別觀察一下0的情況,並手測數據即可;
-
五、提交后仍存在的bug
- 無;
-
-
源代碼:
#include <cstdio> int a,b,l,ans[10]; int main( ) { for (scanf("%d%d",&a,&b); a+b<0; printf("-")) a=-a,b=-b; for (a+=b,l=a==0; a; a/=1000) ans[++l]=a%1000; for (printf("%d",ans[l]); --l; ) printf(",%03d",ans[l]); }
-
提交記錄截圖
附:該頁Markdown源碼
# PAT 1001 A+B
- ### 代碼鏈接:[傳送門][2]
----
- ### 題目鏈接:[傳送門][1]
- ### 題目簡述:
- 給定兩個值a,b;
- 范圍-1000000 <= a, b <= 1000000;
- 按指定格式輸出a+b的結果,例:-99,991;
- ### 解題思路:
- 一、明確范圍
- a+b在正負兩百萬內;
- int夠用,不用高精度;
- 二、明確格式
- 三位一起;
- 視最后采取的代碼寫法注意可能需要補零;
- 負號可以提前判定,相當於只要考慮正數;
- 三、采取措施:
- 計算a+b的結果c,處理掉負號;
- 按c按1000進制將結果存儲在數組中;
- 輸出最高位;
- 剩下的每位:輸出一個 “,” 號,再輸出該位(補零)
- 四、潛在問題:
- 視代碼的具體實現方式可能在處理0的時候會出問題;
- 對應措施:打完代碼特別觀察一下0的情況,並手測數據即可;
- 五、提交后仍存在的bug
- 無;
- ### 源代碼:
#include <cstdio>
int a,b,l,ans[10];
int main( )
{
for (scanf("%d%d",&a,&b); a+b<0; printf("-")) a=-a,b=-b;
for (a+=b,l=a==0; a; a/=1000) ans[++l]=a%1000;
for (printf("%d",ans[l]); --l; ) printf(",%03d",ans[l]);
}
- ### 提交記錄截圖

[1]: http://www.patest.cn/contests/pat-a-practise/1001
[2]: https://github.com/TheSkyFucker/object-oriented/tree/master/1001