给定一个正整数 N(1

N

2


)。 现在需要将其转换为千分位格式,即从整数最低位开始,每三位数字插入一个英文逗号,以提高可读性。 例如,对于 980364535980364535,转换后为 980,364,535980,364,535。 请编写程序完成该格式转换。
输入描述: 在一行中输入一个整数 N(1

N

2


)。
输出描述: 输出一个字符串,表示将 NN 转换为千分位格式后的结果。 请不要输出多余的空格或换行。
将整数 N 转成字符串处理。
从字符串的末尾开始往前遍历,每 3 个字符插入一个逗号 ,。
注意不要在最前面加逗号。
string s = to_string(N);
int len = s.length();
string result;to_string(N) 将整数 N 转换成字符串
s 的长度(字符个数)
result,用来存储最终格式化后的结果
逻辑:程序会从 s 的末尾开始遍历,每3个数字就在 result 中插入一个逗号,最后得到千分位格式的字符串。
int count = 0;
for (int i = len - 1; i >= 0; i--) {
result.push_back(s[i]);
count++;
if (count % 3 == 0 && i != 0) {
result.push_back(',');
}
}输入: s = "980364535", len = 9
循环 | i | s[i] | result变化 | count | 条件判断 | 动作 |
|---|---|---|---|---|---|---|
1 | 8 | '5' | "5" | 1 | 1%3≠0 | - |
2 | 7 | '3' | "53" | 2 | 2%3≠0 | - |
3 | 6 | '5' | "535" | 3 | 3%3=0且i≠0 | 加逗号 → "535," |
4 | 5 | '4' | "535,4" | 4 | 4%3≠0 | - |
5 | 4 | '6' | "535,46" | 5 | 5%3≠0 | - |
6 | 3 | '3' | "535,463" | 6 | 6%3=0且i≠0 | 加逗号 → "535,463," |
7 | 2 | '0' | "535,463,0" | 7 | 7%3≠0 | - |
8 | 1 | '8' | "535,463,08" | 8 | 8%3≠0 | - |
9 | 0 | '9' | "535,463,089" | 9 | 9%3=0但i=0 | 不加逗号 |
reverse (result.begin(), result.end());
cout << result << endl;将字符串完全反转
得到最终结果
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
string s = to_string(n);
int len = s.length();
string result;
int count = 0;
for (int i = len - 1; i >= 0; i--) {
result.push_back(s[i]);
count++;
if (count % 3 == 0 && i != 0) {
result.push_back(',');
}
}
reverse (result.begin(), result.end());
cout << result << endl;
return 0;
}旺仔哥哥经常在牛客上刷题,但有一天他突然忘记了登录密码(他没有绑定邮箱或手机)。 他记得密码是通过对原文字符串 s 中的每个小写英文字母向后错位 nn 次得到的。字母 z 向后错位一次会变为 a,以此类推循环。 现给出原文字符串 s 和错位次数 n,请帮助旺仔哥哥计算出最终密码。
第一行输入一个整数 n (1≦n≦100),表示错位次数。 第二行输入一个由小写英文字母组成的字符串 s(1≦∣s∣≦103)(1≦∣s∣≦103),表示原文字符串。
输出一个字符串,表示对 ss 中每个字符向后错位 nn 次后得到的密码字符串。
n 位。
'z',则循环回到 'a' 继续。
n 最大是 100,我们可以直接对 26 取模来减少不必要的循环。
对于字符 c,移位后的字符为:
new_char=(c−′a′+n)mod 26+′a′new_char=(c−′a′+n)mod26+′a′
n % 26 避免无效的大循环。
(c - 'a' + n) % 26 + 'a' 可以保证结果在 'a' 到 'z' 之间。
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
string s;
cin>>s;
n = n % 26;
for(char &c : s){
if(c>='a' && c<='z'){
c=(c - 'a'+n)%26+'a';
}
}
cout<< s <<endl;
return 0;
}