第 116 题:日期计算
题目描述:给你一个日期的字符串 s,s 的格式为 ‘yyyy-mm-dd’(保证给定的日期合法),
请你输出该日期是该年份的第几天,第几周,用一个空格隔开这两个数字。
注意,天和周都从 1 开始计数。一周的开始是周日,结束是周六,例如 2014-01-04 是周六
(这是 2014 年的第一周的最后一天),2014-01-05 是周日(这是第二周的开始)。
例如:
s = '2014-01-01', 则输出:1 1 s = '2014-01-05', 则输出:5 2
>>> def func(str): t = [int(i) for i in str.split('-')] from datetime import date s = date(t[0],t[1],t[2]) return '%s %s'%((s-date(t[0],1,1)).days+1, s.isocalendar()[1]) >>> func('2014-1-1') '1 1' >>> func('2014-1-5') '5 1' >>> func('2019-11-2') '306 44' >>> func('2002-7-8') '189 28'
============================================================
第 117 题:因数(来自 2013 年 ACM-ICPC 世界总决赛)
题目描述:数论的基本定理指出,对于任意大于 1 的整数,总有唯一的质因数分解。但是质
因数的组合形式通常不止一种:
如:
10 = 2×5 = 5×2
20 = 2×2×5 = 2×5×2 = 5×2×2
设 f(k)为组合的个数,有 f(10) = 2, f(20) = 3 .
给定正整数 n(0 < n < 1000) ,总存在至少一个 k,使得 f(k) = n .
求满足条件的 k 的最小值。
如:n=1,则输出 2。 因为 2=2 只有一种分解形式,故 f(2)=1,且 2 是满足条件的最小的整数,
故输出 2。
============================================================
第 118 题:约瑟夫问题
题目描述:约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从
第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从 1 开始报数。
就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,现在给你 n 和 m,请你输出最
后猴王的编号。示例:
输入:n = 6
m = 2
输出:5
============================================================
第 119 题:矩阵乘方和
题目描述:给定一个 n*n 的矩阵 A,正整数 k 以及正整数 m(n<=30,k<=1000000000,m<=10000),
请求出 S=A+A^2+A^3+A^4+...+A^k 的值.A^x 表示 x 个 A 相乘的结果. 输出矩阵 S 对 m 取模后
的值,包括 n 行,每行 n 个数,每行数字之间以一个空格隔开。
A 是一个二维列表,例如:
n=2, k=2, m=4,A=[[0,1],[1,1]]
则输出:
1 2
2 3
============================================================
第 120 题:木棒问题
题目描述:小 Py 有 n 根长度不同的木棒,有一天它把所有的木棒排成一行,用 S1,S2,S3,...,Sn
表示.量出每个木棒的长度 Sk(1<=k<=n),它发现有两个木棒 Si 和 Sj(1< = i < j < = n),它们之间的
所有木棒都比 Si 要长比 Sj 短.
现在给出每个木棒的长度,你需要找到满足上述条件的两个木棒 Si 和 Sj,使得 j-i 最大. 木棒的
长度存放在列表 L 中,请你输出满足条件的 j-i 的最大值,如果不存在,则输出-1。
如:L = [5,4,3,6], 则输出:1。
============================================================