1 条题解

  • 0
    @ 2025-4-12 21:47:20

    C :

    #include <stdio.h>
    #include <string.h>
    #define SIZE 1000
    
    int main()
    {
      char line[SIZE];
      while(1)
      {
        if(scanf("%s",line)==EOF)
        {
          break;
        }
        int len =strlen(line);
        int inz=strchr(line,'z')-line;
        int inj=strchr(line,'j')-line;
        if(inj<0||inz<0)
        {
          printf("Wrong Answer\n");
          continue;
        }
        int count=inj-inz-1;
        int flag=0;
        if(count>=1)
        {
          
          for(int i=inj+1;i<len;i++)
          {
            if(line[i]!='o')
            {
              flag=1;
              break;
            }
          }
          for(int i=inz+1;i<inj;i++)
          {
            if(line[i]!='o')
            {
              flag=1;
              break;
            }
          }
          if(flag==1)
          {
            printf("Wrong Answer\n");
            continue;
          }
          int result=len-inj-1;
          for(int i=count;i>=1;i--)
          {
            result=result-inz;
            if(result<=0)
            {
              break;
            }
          }
          if(result!=0)
          {
            printf("Wrong Answer\n");
          }
          else if(result==0)
          {
            printf("Accepted\n");
          }
        }
        else if(count<1)
        {
          printf("Wrong Answer\n");
        }
      }
    }
    

    C++ :

    #include <stdio.h>
    
    bool Judge(char *str){		// 判断字符串是否符合要求
    	int oBeforeZ=0, oMid=0, oAfterJ=0;	// 分别存储 z 前面、z 与 j 之间以及 j 之后的o的数目。
    	int i = 0;
    	while(str[i] && str[i]=='o'){		// 计算 z 之前的 o 的数目,这里注意不能超出字符串边界(用 str[i]来判断,下同)
    		i++;
    		oBeforeZ++;
    	}
    	if(str[i] != 'z'){		// 如果第一次遍历 o 结束后的字符不是 z 则不符合要求
    		return false;
    	}
    
    	i++;
    	while(str[i] && str[i]=='o'){		// 计算 z 与 j 之间 o 的数目
    		i++;
    		oMid++;
    	}
    	if(!oMid || str[i]!='j'){			// 如果中间没有 o 或者中间 o 之后的字符不是 j,则不符合
    		return false;
    	}
    
    	i++;
    	while(str[i] && str[i]=='o'){		// 计算 j 之后 o 的数目
    		i++;
    		oAfterJ++;
    	}
    
    	if(str[i]){							// 如果 j 之后的 o 都统计完了还没有到达字符串结尾,则不符合
    		return false;
    	}
    
    	return oBeforeZ*oMid == oAfterJ;	// 只有 z 前面 o 的数目与中间 o 数目的乘积与 j 后面 o 的数目相同,才符合
    }
    
    int main(){
    	char str[1100];		// 用来读入字符串
    	while(scanf("%s", str) != EOF){
    		puts(Judge(str) ? "Accepted" : "Wrong Answer");
    	}
    
    	return 0;
    }
    
    

    Java :

    import java.util.*;
    
    public class Main{
        public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        while(in.hasNext()){
            String str = in.next();
            int n = str.length();
            int z = str.indexOf("z");
            int j = str.indexOf("j");
            int countz = 0, countj = 0;
            for(int i=0;i<str.length();i++)
                if(str.charAt(i)=='z')
                    countz++;
                else if(str.charAt(i)=='j')
                    countj++;
            if(countz!=1||countj!=1)
                System.out.println("Wrong Answer");
            else if(z>j)
                System.out.println("Wrong Answer");
            else if(str.charAt(0)=='z'&&str.charAt(1)=='j'){
                System.out.println("Wrong Answer");
            }
            else{
            String[] strarray = str.split("z|j");
            int a = strarray[0].length(), b = strarray[1].length(), c = 0;
            if(str.charAt(n-1)=='o')
                c = strarray[2].length();
            if(b==0)
                System.out.println("Wrong Answer");
            else if(c/b==a)
                System.out.println("Accepted");
            else
                System.out.println("Wrong Answer");
            }
        }
    }
    }
    
    • 1

    信息

    ID
    1737
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者