zoukankan      html  css  js  c++  java
  • EOJ 3256 拼音魔法

    模拟。

    有$a$先标$a$,其次是$o$和$e$,$o$和$e$在韵母中不会同时存在。最后是$u$和$i$,这两个字母在韵母中可能同时存在,标在后面的那个。输出那些字符的话直接输出就可以了。

    举几个例子:

    3

    shui2

    Case 1: shuí

    liu2

    Case 2: liú

    lve4

    Case 3: lüè

    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    char s[10000];
    int T, len, cas = 1;
    int diao;
    
    void A()
    {
    	if(diao==1) printf("ā");
    	if(diao==2) printf("á");
    	if(diao==3) printf("ǎ");
    	if(diao==4) printf("à");
    }
    
    void E()
    {
    	if(diao==1) printf("ē");
    	if(diao==2) printf("é");
    	if(diao==3) printf("ě");
    	if(diao==4) printf("è");
    }
    
    void I()
    {
    	if(diao==1) printf("ī");
    	if(diao==2) printf("í");
    	if(diao==3) printf("ǐ");
    	if(diao==4) printf("ì");
    }
    
    void O()
    {
    	if(diao==1) printf("ō");
    	if(diao==2) printf("ó");
    	if(diao==3) printf("ǒ");
    	if(diao==4) printf("ò");
    }
    
    void U()
    {
    	if(diao==1) printf("ū");
    	if(diao==2) printf("ú");
    	if(diao==3) printf("ǔ");
    	if(diao==4) printf("ù");
    }
    
    void V()
    {
    	if(diao==1) printf("ǖ");
    	if(diao==2) printf("ǘ");
    	if(diao==3) printf("ǚ");
    	if(diao==4) printf("ǜ");
    }
    
    void work()
    {
    	int f=0;
    	for(int i=0;i<len-1;i++) if(s[i]=='a') f=1;
    
    	if(f==1)
    	{
    		for(int i=0;i<len-1;i++)
    		{
    			if(s[i]=='a') A();
    			else 
    			{
    				if(s[i]=='v') printf("ü");
    				else printf("%c",s[i]);
    			}
    		}
    		printf("
    ");
    		return ;
    	}
    
    	for(int i=0;i<len-1;i++) if(s[i]=='e') f=1;
    
    	if(f==1)
    	{
    		for(int i=0;i<len-1;i++)
    		{
    			if(s[i]=='e') E();
    			else 
    			{
    				if(s[i]=='v') printf("ü");
    				else printf("%c",s[i]);
    			}
    		}
    		printf("
    ");
    		return ;
    	}
    
    	for(int i=0;i<len-1;i++) if(s[i]=='o') f=1;
    
    	if(f==1)
    	{
    		for(int i=0;i<len-1;i++)
    		{
    			if(s[i]=='o') O();
    			else 
    			{
    				if(s[i]=='v') printf("ü");
    				else printf("%c",s[i]);
    			}
    		}
    		printf("
    ");
    		return ;
    	}
    
    	for(int i=0;i<len-1;i++) if(s[i]=='v') f=1;
    
    	if(f==1)
    	{
    		for(int i=0;i<len-1;i++)
    		{
    			if(s[i]=='v') V();
    			else printf("%c",s[i]);
    		}
    		printf("
    ");
    		return ;
    	}
    
    	for(int i=len-1;i>=0;i--) 
    	{
    		if(s[i]=='i') { f=1; break; }
    		if(s[i]=='u') { f=2; break; }
    	}
    
    	if(f==1)
    	{
    		for(int i=0;i<len-1;i++)
    		{
    			if(s[i]=='i') I();
    			else 
    			{
    				if(s[i]=='v') printf("ü");
    				else printf("%c",s[i]);
    			}
    		}
    		printf("
    ");
    		return ;
    	}
    
    	if(f==2)
    	{
    		for(int i=0;i<len-1;i++)
    		{
    			if(s[i]=='u') U();
    			else 
    			{
    				if(s[i]=='v') printf("ü");
    				else printf("%c",s[i]);
    			}
    		}
    		printf("
    ");
    		return ;
    	}
    
    }
    
    int main()
    {
    	scanf("%d",&T);
    	while(T--)
    	{
    		scanf("%s",s);
    		len = strlen(s);
    
    		printf("Case %d: ",cas++);
    		if(s[len-1]>='0'&&s[len-1]<='9')
    		{
    			diao = s[len-1]-'0';
    			work();
    		}
    		else 
    		{
    			for(int i=0;i<len;i++)
    			{
    				if(s[i]=='v') printf("ü");
    				else printf("%c",s[i]);
    			}
    			printf("
    ");
    		}
    	}
    	return 0;
    }
  • 相关阅读:
    补 七月九日学习报告
    七月八日学习报告
    学习笔记164—层次聚类 Hierarchical Clustering
    学习笔记163—理解模型正则化:L1正则、L2正则(理论+代码)
    学习笔记162—Linear Regression vs Logistic Regression
    学习笔记161—win7C盘 虚拟内存移动到D盘或其他盘符
    学习笔记160—文献引文分析利器 HistCite 详细使用教程
    学习笔记159—电脑word文档回车表格随文字移动
    学习笔记158—INTRODUCTION TO LINEAR MIXED MODELS
    学习笔记157—Nipype的安装
  • 原文地址:https://www.cnblogs.com/zufezzt/p/6851625.html
Copyright © 2011-2022 走看看