zoukankan      html  css  js  c++  java
  • 题解 CF25B 【Phone numbers】

    一道字符串模拟题

    首先我们知道

    偶数+偶数=偶数

    偶数+奇数=奇数

    然后我们就可以对(N)进行分类讨论:

    • (Nle3)时,直接输出字符串即可

    • (N=2k) ((kge2))时,可以把(N)拆分成若干个长度为2的字符串,在两个字符串之间添上-号

    • (N=2k+1) ((kge2))时,可以把(N)拆分成一个长度为3的字符串和若干个长度为2的字符串,在两个字符串之间添上-号

    Code

    #include<bits/stdc++.h>
    using namespace std;
    string s;
    int sum;
    int n;
    int main()
    {
    	scanf("%d",&n);
    	cin>>s;
    	if(n<=3) //如果n<=3,直接输出
    	{
    		cout<<s;
    		return 0;
    	}
    	if(n%2==0) //n为偶数则拆分成若干个长度为2的字符串
    	{
    		for(int i=0; i<n; i++)
    		{
    			sum++;
    			printf("%c",s[i]);
    			if(i==n-1) return 0;
    			if(sum==2)
    			{
    				printf("-");
    				sum=0;
    			}
    		}
    	}
    	else //n为奇数则拆分成一个长度为3的字符串和若干个长度为2的字符串
    	{
    		for(int i=0; i<3; i++)
    		{
    			printf("%c",s[i]);
    		}
    		printf("-");
    		for(int i=3; i<n; i++)
    		{
    			sum++;
    			printf("%c",s[i]);
    			if(i==n-1) return 0;
    			if(sum==2)
    			{
    				printf("-");
    				sum=0;
    			}
    		}
    	}
    	return 0;
    }
    
    
  • 相关阅读:
    gdbinit理解
    debug套路
    node 版本升级
    工作方式
    vscode 插件编写
    函数闭包与装饰器
    高阶函数与递归
    函数嵌套及作用域
    函数
    文件处理
  • 原文地址:https://www.cnblogs.com/WKAHPM/p/11628903.html
Copyright © 2011-2022 走看看