codeforces-25B. Phone numbers-题解
题目:
伯兰的电话号码是n位数字的序列。通常,为了更容易记住数字,它被分成两组或三组数字。例如,电话号码1198733更容易记住为11-987-33。你的任务是找出一个给定的电话号码,它可以分成两组或三组。 输入第一行包含整数n(2<=n<=100)个电话号码。第二行包含要分组的电话号码n位。输出给定电话号码分成两组或三组的任何一组。按单个字符-分隔组。如果答案不是唯一的,则输出any。
输入
6
549871
输出
54-98-71
输入
7
1198733
输出
11-987-33
思路:
主要看与输入n与3的关系,分三种情况,(整除,余1,余2)
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int main()
{
int n;
string a;
cin>>n;
cin>>a;
if(n%3==0){//如果除得尽3,那么隔3个用一个“-”
cout<<a[0]<<a[1]<<a[2];
for(int i=3;i<n;i=i+3){
cout<<'-'<<a[i]<<a[i+1]<<a[i+2];
}
cout<<endl;
}
else if(n%3==1){//前面两个用"-"
cout<<a[0]<<a[1]<<'-'<<a[2]<<a[3];
for(int i=4;i<n;i=i+3){
cout<<'-'<<a[i]<<a[i+1]<<a[i+2];
}
cout<<endl;
}
else{//前面一个用“-”
cout<<a[0]<<a[1];
for(int i=2;i<n;i=i+3){
cout<<'-'<<a[i]<<a[i+1]<<a[i+2];
}
cout<<endl;
}
return 0;
}
这道题没有什么难度,暴力+列举就好!!!

浙公网安备 33010602011771号