【PTA甲級、C++簡單解答】1001 A+B Format (20分)
關鍵是求得第一個逗號應該出現的索引位置,下面這一個式子很關鍵
int start_of_comma = start_of_num + (len_of_num%3 == 0 ? 3 : len_of_num%3);
start_of_num
是為了跳過負號,獲得數字部分開始的索引。
len_of_num%3 == 0 ? 3 : len_of_num%3
如果數字部分的長度能被3整除,為了不能在數字的一開頭就加上逗號,所以要使其為3以跳到下一個應該插入逗號的位置,這樣的位置(start_of_num + 3)才為第一個逗號應插入的索引。
如果數字部分的長度不能被3整數,直接對3取餘,start_of_num加上餘數就是第一個逗號應插入的索引。
# include <iostream>
# include <vector>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
string str_sum = to_string(a + b);
int str_size = str_sum.size(); // 未加逗號的結果字串的長度
int start_of_num = str_sum[0] == '-' ? 1 : 0; // 根據是否有負號來求得第一個數字字元的索引
int len_of_num = str_size - start_of_num; // 求得未加逗號的結果字串的數字部分的長度
int start_of_comma = start_of_num + (len_of_num%3 == 0 ? 3 : len_of_num%3); // 求得第一個逗號應插入的位置(關鍵!!!!)
//從第一個逗號處開始每隔三位數字插入一個逗號
for(int i = start_of_comma;i < str_size;i+=3)
str_sum.insert(i++, ","); // 插入後i指向當前字元而不是指向逗號處,所以i++跳過已經插入的逗號
cout << str_sum << endl;
return 0;
}
相關文章
- PAT:1001 A+B Format (20分)ORM
- PTA甲級——Be Unique
- 【PAT甲級A1065】A+B and C (64bit) (20分)(c++)C++
- PTA甲級 1076 Forwards on Weibo (30分)Forward
- [#181024][PAT Practice] A+B FormatORM
- C++學習之路 | PTA乙級—— 1015 德才論 (25分)(精簡)C++
- PAT甲級1126~1130|C++實現C++
- P1001 A+B Problem(整活-dijstra堆最佳化)JS
- PTA 狼人殺-簡單版 (20分)
- SimpleDateFormat.format的簡單使用小結ORM
- 【PAT甲級A1084】Broken Keyboard (20分)(c++)C++
- 夕甲甲——孔乙己之C++版C++
- 【PAT甲級A1038】Recover the Smallest Number (30分)(c++)C++
- PAT甲級1122 Hamiltonian Cycle (25分)|C++實現C++
- PAT甲級1154 Vertex Coloring (25分)|C++實現C++
- 1001 害死人不償命的(3n+1)猜想 PTA
- PAT甲級1110 Complete Binary Tree (25分)|C++實現C++
- C++簡單vectorC++
- PTA基礎6-8簡單階乘計算
- PAT甲級1032 Sharing
- 1021 Deepest Root(甲級)
- (非原創)PAT甲級1123 Is It a Complete AVL Tree (30分)|C++實現C++
- 1007:計算(a+b)×c的值(C C++)C++
- C++ - 簡單工廠模式C++模式
- PAT甲級1030 Travel Plan
- 浙大PAT甲級考試
- 簡單介紹python format格式化和數字格式化PythonORM
- C++中const的簡單用法C++
- c++簡單程式設計-3C++程式設計
- C++基礎簡單總結C++
- 簡單C++執行緒池C++執行緒
- PTA乙級 1004 成績排名
- PAT甲級1023 Have Fun with Number
- 簡單的素數問題(C++)C++
- UE4 c++ -- 簡單的UMGC++
- C++ 巢狀類簡單測試C++巢狀
- C++中簡單使用HP-SocketC++
- A+B