-
无符号乘法
def mutiply(a, b): ans = 0 while b != 0: if b & 1 == 1: ans = ans + a a = a << 1 b = b >> 1 return ans a = eval(input()) b = eval(input()) print(mutiply(a, b))
假设b有 n n n个bit,时间复杂度就是 O ( n 2 ) O(n^2) O(n2)
-
证明命题 1.1 1.1 1.1,设 a, b, c ∈ Z,如果 a | b,b | c,则 a | c。如果 c | a,c | b,则对任意 m, n ∈ Z,有c | (ma + nb)。
如果 a ∣ b a | b a∣b, b ∣ c b|c b∣c,则有整数 m , n m,n m,n使得 b = a ∗ m b=a*m b=a∗m, c = b ∗ n c=b*n c=b∗n,所以有 c = m ∗ n ∗ a c=m*n*a c=m∗n∗a,因为 m ∗ n m*n m∗n是整数,所以有 a ∣ c a|c a∣c。如果 c ∣ a c|a c∣a, c ∣ b c|b c∣b,则有整数 n 1 n_1 n1, n 2 n_2 n2使得 a = n 1 ∗ c a=n_1*c a=n1∗c, b = n 2 ∗ c b=n_2*c b=n2∗c,所以 ( m ∗ a + n ∗ b ) / c = ( m ∗ n 1 ∗ c + n ∗ n 2 ∗ c ) / c = ( m ∗ n 1 + n ∗ n 2 ) ∗ c / c = ( m ∗ n 1 + n ∗ n 2 ) (m*a+n*b)/c=(m*n_1*c+n*n_2*c)/c=(m*n_1+n*n_2)*c/c=(m*n_1+n*n_2) (m∗a+n∗b)/c=(m∗n1∗c+n∗n2∗c)/c=(m∗n1+n∗n2)∗c/c=(m∗n1+n∗n2),因为 m ∗ n 1 + n ∗ n 2 m*n_1+n*n_2 m∗n1+n∗n2是整数,所以 c ∣ ( m a + n b ) c|(ma+nb) c∣(ma+nb)。
-
定理 1.1 1.1 1.1的证明
构造集合 S = { a − b k : k ∈ Z , 且 a − b k ≥ 0 } S= \lbrace a-bk:k \in Z,且a-bk \geq 0\rbrace S={a−bk:k∈Z,且a−bk≥0},如果存在 r 1 , q 1 r_1,q_1 r1,q1,使得 a = q 1 b + r 1 a=q_1b+r_1 a=q1b+r1,存在 r 2 , q 2 r_2,q_2 r2,q2,使得 a = q 2 b + r 2 a=q_2b+r_2 a=q2b+r2,且 r 1 ! = r 2 , q 1 ! = q 2 r_1!=r_2,q_1!=q_2 r1!=r2,q1!=q2至少有一个式子成立。
- 若 r 1 ! = r 2 , 且 q 1 = = q 2 r_1!=r_2,且q_1==q_2 r1!=r2,且q1==q2,则 r 1 = a − q 1 b r_1=a-q_1b r1=a−q1b, r 2 = a − q 2 b = a − q 1 b = r 1 r_2=a-q_2b=a-q_1b=r_1 r2=a−q2b=a−q1b=r1,与 r 1 ! = r 2 r_1!=r_2 r1!=r2矛盾,同理可证不存在 q 1 ! = q 2 , 且 r 1 = = r 2 q_1!=q_2,且r1==r2 q1!=q2,且r1==r2。
- 若 r 1 ! = r 2 , 且 q 1 ! = q 2 r_1!=r_2,且q_1!=q_2 r1!=r2,且q1!=q2,因为 r 1 , r 2 ∈ S r_1,r_2 \in S r1,r2∈S,所以 r 1 , r 2 r_1,r_2 r1,r2肯定有一个是更大的元素,则此更大的元素肯定大于 b b b,与定理 1.1 1.1 1.1矛盾。
CINTA 作业1
最新推荐文章于 2021-12-30 23:27:45 发布