第五届CCF软件能力认证
第二行包含n个整数a1, a2, …, an,表示给定的数列,相邻的整数之间用一个空格分隔。
8 8 8 0 12 12 8 0
1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 using namespace std; 5 6 int main(){ 7 int n ; 8 scanf("%d" , &n) ; 9 int i , j = 0 ; 10 int a[1200] ; 11 int sum = 1 ; 12 for (i = 0 ; i < n ; i++) 13 scanf("%d" , &a[i]) ; 14 for (i = 1 ; i < n ; i++){ 15 if (a[j] != a[i]){ 16 sum++ ; 17 j = i ; 18 } 19 } 20 printf("%d\n" , sum) ; 21 22 23 return 0 ; 24 }
View Code
2.日期计算
注意闰年的2月有29天。满足下面条件之一的是闰年:
1) 年份是4的整数倍,而且不是100的整数倍;
2) 年份是400的整数倍。
输入的第二行包含一个整数d,d在1至365之间。
80
21
40
9
1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 using namespace std; 5 6 bool isleap(int y){ 7 if(y%4==0&&y%100!=0||y%400==0) 8 return 1 ; 9 else 10 return 0 ; 11 } 12 13 int main(){ 14 int y,d ; 15 scanf("%d %d" , &y , &d) ; 16 int i = 1 ; 17 int a[13] = {0 , 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31} ; 18 int b[13] = {0 , 31 , 29 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31} ; 19 20 if (isleap(y)){ 21 while(d > b[i]){ 22 d -= b[i] ; 23 i++ ; 24 } 25 } 26 else{ 27 while(d > a[i]){ 28 d -= a[i] ; 29 i++ ; 30 } 31 } 32 printf("%d\n%d\n" , i , d) ; 33 34 35 36 return 0 ; 37 }
View Code
3.模板生成系统
而当用户为 Jerry 时,网页的源代码是
这样的例子在包含动态内容的网站中还有很多。为了简化生成网页的工作,成成觉得他需要引入一套模板生成系统。
模板是包含特殊标记的文本。成成用到的模板只包含一种特殊标记,格式为 {{ VAR }},其中 VAR 是一个变量。该标记在模板生成时会被变量 VAR 的值所替代。例如,如果变量 name = “Tom”,则 {{ name }} 会生成 Tom。具体的规则如下:
·变量名由大小写字母、数字和下划线 (_) 构成,且第一个字符不是数字,长度不超过 16 个字符。
·变量名是大小写敏感的,Name 和 name 是两个不同的变量。
·变量的值是字符串。
·如果标记中的变量没有定义,则生成空串,相当于把标记从模板中删除。
·模板不递归生成。也就是说,如果变量的值中包含形如 {{ VAR }} 的内容,不再做进一步的替换。
接下来 m 行,每行是一个字符串,表示模板。
接下来 n 行,每行表示一个变量和它的值,中间用一个空格分隔。值是字符串,用双引号 (“) 括起来,内容可包含除双引号以外的任意可打印 ASCII 字符(ASCII 码范围 32, 33, 35-126)。
<!DOCTYPE html>
<html>
<head>
<title>User {{ name }}</title>
</head>
<body>
<h1>{{ name }}</h1>
<p>Email: <a href=”mailto:{{ email }}”>{{ email }}</a></p>
<p>Address: {{ address }}</p>
</body>
</html>
name “David Beckham”
email “david@beckham.com”
<html>
<head>
<title>User David Beckham</title>
</head>
<body>
<h1>David Beckham</h1>
<p>Email: <a href=”mailto:david@beckham.com”>david@beckham.com</a></p>
<p>Address: </p>
</body>
</html>
0 ≤ n ≤ 100
输入的模板每行长度不超过 80 个字符(不包含换行符)。
输入保证模板中所有以 {{ 开始的子串都是合法的标记,开始是两个左大括号和一个空格,然后是变量名,结尾是一个空格和两个右大括号。
输入中所有变量的值字符串长度不超过 100 个字符(不包括双引号)。
保证输入的所有变量的名字各不相同。
现在,大臣们帮国王拟了一个修高速公路的计划。看了计划后,国王发现,有些城市之间可以通过高速公路直接(不经过其他城市)或间接(经过一个或多个其他城市)到达,而有的却不能。如果城市A可以通过高速公路到达城市B,而且城市B也可以通过高速公路到达城市A,则这两个城市被称为便利城市对。
国王想知道,在大臣们给他的计划中,有多少个便利城市对。
接下来m行,每行两个整数a, b,表示城市a有一条单向的高速公路连向城市b。
1 2
2 3
3 4
4 2
3 5
城市间的连接如图所示。有3个便利城市对,它们分别是(2, 3), (2, 4), (3, 4),请注意(2, 3)和(3, 2)看成同一个便利城市对。
前60%的评测用例满足1 ≤ n ≤ 1000, 1 ≤ m ≤ 10000;
所有评测用例满足1 ≤ n ≤ 10000, 1 ≤ m ≤ 100000。
在Q语言的所有单词中,小明选出了他认为最重要的n个。使用这些单词,小明可以评价一篇Q语言文章的“重要度”。
文章“重要度”的定义为:在该文章中,所有重要的Q语言单词出现次数的总和。其中多次出现的单词,不论是否发生包含、重叠等情况,每次出现均计算在内。
例如,假设n = 2,小明选出的单词是gvagv和agva。在文章gvagvagvagv中,gvagv出现了3次,agva出现了2次,因此这篇文章的重要度为3+2=5。
现在,小明想知道,一篇由m个字母组成的Q语言文章,重要度最高能达到多少。
接下来n行,每行包含一个仅由英文小写字母构成的字符串,表示小明选出的这n个单词。
agva
agvagva
gvagva
在这篇文章中,agva出现4次,agvagva出现3次,gvagva出现4次,共计4+3+4=11次。
设s为构成n个重要单词字母的总个数,例如在样例中,s=4+7+6=17;a为构成n个重要单词字母的种类数,例如在样例中,共有3中字母\’a\’,\’g\’,\’v\’,因此a=3。
评测用例1和2满足2 ≤ n ≤ 3,1500 ≤ m ≤ 2000,s = 40;
评测用例3和4满足m = 20,2 ≤ a ≤ 3;
评测用例5、6和7满足2000 ≤ m ≤ 100000;
评测用例8满足n = 2;
所有的评测用例满足1 ≤ s ≤ 100,1 ≤ m ≤ 1015,每个单词至少包含1个字母,保证单词中仅出现英文小写字母,输入中不含多余字符,不会出现重复的单词。