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;
    }
  • 相关阅读:
    you-get 下载网络上的富媒体信息
    响应式布局
    网页头部的声明应该是用 lang="";
    htm、html、shtml网页区别
    请求头出现Provisional headers are shown
    配置nginx直接使用webpack生成的gz压缩文件,而不用nginx自己压缩
    babel-plugin-equire
    VUE中$refs的基本用法
    element-ui--按需引入
    vue ts ,vue使用typescript,三种组件传值方式
  • 原文地址:https://www.cnblogs.com/zufezzt/p/6851625.html
Copyright © 2011-2022 走看看