老师,可以提问pta甲级的题目?
来源:3-5 三路快排partition思路的应用 Sort Color
weixin_慕仰6475988
2020-03-03
这是pta甲级的1001题, 我想问下这里(i+1)%3==len%3是什么意思?和这个题目的关系,麻烦老师了
#include
using namespace std;
int main() {
int a, b;
cin >> a >> b;
string s = to_string(a + b);
int len = s.length();
printf("%d\n", len);
for (int i = 0; i < len; i++) {
cout << s[i];
if (s[i] == ‘-’) continue;
if ((i + 1) % 3 == len % 3 && i != len - 1) cout << “,”;
}
return 0;
}
1回答
-
liuyubobobo
2020-03-04
请给我题目链接,谢谢。
==========
先不考虑索引是从 0 开始,假设索引是从 1 开始:
举稍微大一点的例子:
123,456,789
12,345,678
1,234,567
可以看到,逗号的位置,和字符串长度相关。
长度为 9,逗号在 3 6 之后,即长度可被 3 整除,逗号在可被 3 整除的那个索引(从 1 开始数)后面;
长度为 8,逗号在 2 5 之后,即长度被 3 整除模 2,逗号在被 3 整除模 2 的那个索引(从 1 开始数)后面;
长度为 7,逗号在 1 4 之后,即长度被 3 整除模 1,逗号在被 3 整除模 1 的那个索引(从 1 开始数)后面;
因为索引是从 0 开始计算的,所以是 i + 1
这个做法蛮 tricky。比较朴实的笨做法,是倒序处理一遍字符串,逢 3 个字符加一个逗号,最后再讲倒序处理的字符串翻转。
加油!:)
022020-03-04
相似问题