【杭电】[3788]ZOJ问题

文章字数:381

问题描述

问题分析

找规律的题目
先分析能AC的条件
1.ZOJ能AC 这个很简单
2.xzojx能AC 也就是z前的与j后个数相同 之间有1个
3.若azbjc 能AC,则azbojac也能AC
第三个有一个若字
也就是说azbojac能AC是有前提条件的
也就是满足这种形式的可以一步步推出来

分析条件
满足3AC则必有初始时 a=c b=1
然后每一次可以递归得出
三个o的个数
a 2 a+c
a 3 2a+c
……
因为前提条件a=c
所以
三个个数需要满足
a b b*a
也就是个数Z前与ZJ之间的乘积要与J后的相等
所以可以排除其它完全不可能的
(zj中间一个o没有 没有z或j)
写出AC条件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include<stdio.h>
#include<string.h>
int main() {
	char s[1200];
	while(gets(s)!=NULL) {
		int l=strlen(s);
		int a=0,b=0,c=0,z=0,j=0;
		bool AC=false;
		for(int i=0; i<l; i++) {
			if(s[i]=='z') {
				if(z==0)
					z++;
				else {
					break;
				}
			} else if(s[i]=='j') {
				if(j==0)
					j++;
				else {
					break;
				}
			} else {
				if(z==0)
					a++;
				else if(j==0)
					b++;
				else
					c++;
			}
		}
		if(b>0&&a*b==c)
			AC=true;
		if(!z||!j)
			AC=false;
		if(AC)
			printf("Accepted\n");
		else
			printf("Wrong Answer\n");
	}
	return 0;
}

题目地址:【杭电】[3788]ZOJ问题

该内容采用 CC BY-NC-SA 4.0 许可协议。

如果对您有帮助或存在意见建议,欢迎在下方评论交流。

加载中...