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;
}

这道题没有什么难度,暴力+列举就好!!!

posted @   金鳞踏雨  阅读(13)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示