首页 > 技术文章 > CCF201509-Python题解

z-712 2021-02-27 09:49 原文

数列分段

原题链接:http://118.190.20.162/view.page?gpid=T32

试题编号: 201509-1
试题名称: 数列分段
时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
  给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段?
输入格式
  输入的第一行包含一个整数n,表示数列中整数的个数。
  第二行包含n个整数a1a2, …, an,表示给定的数列,相邻的整数之间用一个空格分隔。
输出格式
  输出一个整数,表示给定的数列有多个段。
样例输入
8
8 8 8 0 12 12 8 0
样例输出
5
样例说明
  8 8 8是第一段,0是第二段,12 12是第三段,倒数第二个整数8是第四段,最后一个0是第五段。
评测用例规模与约定
  1 ≤ n ≤ 1000,0 ≤ ai ≤ 1000。

 

我感觉这道题出题语言不严谨,都说“最”了,`888`和`8`竟然都是`最`

连续相同+单个=最终分段数

 1 from sys import stdin
 2 
 3 n=int(stdin.readline().strip())
 4 arr=list(map(int, stdin.readline().strip().split()))
 5 
 6 summ=1
 7 tmp=arr[0]
 8 for i in range(1,n):
 9     if arr[i]==tmp:
10         continue
11     else:
12         tmp=arr[i]
13         summ+=1
14 print(summ)         

 

 

 

 

日期计算

原题链接:http://118.190.20.162/view.page?gpid=T31

试题编号: 201509-2
试题名称: 日期计算
时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
  给定一个年份y和一个整数d,问这一年的第d天是几月几日?
  注意闰年的2月有29天。满足下面条件之一的是闰年:
  1) 年份是4的整数倍,而且不是100的整数倍;
  2) 年份是400的整数倍。
输入格式
  输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。
  输入的第二行包含一个整数dd在1至365之间。
输出格式
  输出两行,每行一个整数,分别表示答案的月份和日期。
样例输入
2015
80
样例输出
3
21
样例输入
2000
40
样例输出
2
9

 

模拟整个过程,第一种90第二种100

90分(小丑竟是我自己,忘记break一个循环)

 

 1 y=int(input())
 2 d=int(input())
 3 mon=[31,28,31,30,31,30,31,31,30,31,30,31]
 4 if (y%4==0 and y%100!=0) or y%400==0:
 5     mon[1]=29
 6 
 7 month=0
 8 day=0
 9 flag=1
10 while(flag):
11     tmp=1
12     for m in mon:
13         if m-d<0:
14             d-=m
15             tmp+=1
16         elif m-d>=0:
17             month=tmp
18             day=d
19             flag=0
20             # break
21 
22 
23 print(month)
24 print(day)
View Code

100分

 1 y=int(input())
 2 days=int(input())
 3 
 4 mon=[31,28,31,30,31,30,31,31,30,31,30,31]
 5 if (y%4==0 and y%100!=0)or(y%400==0):
 6     mon[1]=29
 7 
 8 m=0
 9 d=0
10 i=0
11 for m in mon:
12     i+=1
13     if days>m:
14         days-=m
15     else:
16         m=i
17         d=days
18         break
19         
20 print(m)
21 print(d)

 

推荐阅读