• 具体数学第二版第一章习题(2)


    16、令$n=2^{m}+t,0leq t < 2^{m}$,即$n=({1b_{m-1}b_{m-2}...b_{2}b_{1}b_{0}})_{2}$.令$g(n)=A_{n}alpha +B_{n}gamma +C_{n}eta _{0}+D_{n}eta _{1}$

    (1)设$alpha =1,eta _{0}=eta _{1}=gamma =0$,那么可以得到$g(1)=1,g(2n)=g(2n+1)=3g(n)$,所以$g(n)=3^{m}=A_{n}alpha +B_{n}gamma +C_{n}eta _{0}+D_{n}eta _{1}=A_{n}$

    (2)令$g(n)=n$可以得到$g(1)=alpha = 1,2n=3n+gamma n + eta _{0},2n+1=3n+gamma (n+1) + eta _{1}$,所以$alpha = 1, gamma = -1, eta_{0}=0,eta_{1}=1$,可以得到$n=A_{n}-B_{n}+D_{n}$,所以$B_{n}-D_{n}=3^{m}-n$

    (3)令$alpha =1,eta _{0}=1,eta _{1}=gamma =0$,即$g(1)=1, g(2n)=3g(n)+1,g(2n+1)=3g(n)$,可以得到$g(n)=3^{m}+sum_{i=0}^{m-1}3^{i}(1-b_{i})=A_{n}+C_{n}$,所以 $C_{n}=sum_{i=0}^{m-1}3^{i}(1-b_{i})$

    (4)令$alpha =1,eta _{1}=1,eta _{0}=gamma =0$,即$g(1)=1, g(2n)=3g(n),g(2n+1)=3g(n)+1$,同理可以得到 $D_{n}=sum_{i=0}^{m-1}3^{i}b_{i}$

    所以$g(n)=3^{m}alpha +left (3^{m}-n+sum_{i=0}^{m-1}3^{i}b_{i}  ight )gamma +left (sum_{i=0}^{m-1}3^{i}(1-b_{i})  ight )eta _{0}+left (sum_{i=0}^{m-1}3^{i}b_{i}  ight )eta _{1}$

    17、对于$frac{n(n+1)}{2}=frac{n(n-1)}{2}+n$个盘子来说,假设四根柱子为ABCD,最后将所有盘子从A移动到D,那么分为五步:(1)将上面的$frac{n(n-1)}{2}$移动到B,需要$W_{frac{n(n-1)}{2}}$步;(2)将接下来的$n-1$个盘子移动到C,需要$T_{n-1}$;(3)将第$n$个盘子移动到D,需要一步;(4)将C上的$n-1$个盘子移动到D,需要$T_{n-1}$步;(5)将B上的$frac{n(n-1)}{2}$个盘子移动到D,需要$W_{frac{n(n-1)}{2}}$步。所以最优的策略不会比这个差,因此$W_{frac{n(n+1)}{2}}leq W_{frac{n(n-1)}{2}}+T_{n-1}+1+T_{n-1}+W_{frac{n(n-1)}{2}}=2W_{frac{n(n-1)}{2}}+T_{n}$

    根据这个递推公式,依次展开每一项,可以得到$W_{frac{n(n+1)}{2}}leq 2^{n}(n-1)+1$,所以$f(n)= 2^{n}(n-1)+1$

    18、设第$j$条线左边的为$x_{j1}$,右边的为$x_{j2}$,可以得到两条线为:$x_{j1}=-(n^{j}+n^{-n})y+n^{2j},x_{j2}=-n^{j}y+n^{2j}$。对于两个$i,j,i<j$来说,可以求出四个交点的$y$坐标分别为:$C_{ij22}=C_{ij11}=n^{i}+n^{j},C_{ij12}=frac{n^{2i}-n^{2j}}{n^{i}+n^{-n}-n^{j}},C_{ij21}=frac{n^{2j}-n^{2i}}{n^{j}+n^{-n}-n^{i}}$。可以很明显看出这四个交点都是大于0的,所以可以得到任意两个都有四个交点。还要证明一点就是任意三条线都不会相交于一点。对于$i<j<kleq n$来说,很明显$C_{ik22}=C_{ik11} eq C_{ij11}$,同时$C_{ik22} eq C_{ij12}$,因为前面是整数后面是小数.最后需要证明的是$C_{ij12} eq C_{ik12},C_{ij12} eq C_{ik21},C_{ij21} eq C_{ik12},C_{ij21} eq C_{ik21}$.这四个的证明比较类似,下面只证明$C_{ij12} eq C_{ik12}$.假设它们相等,那么有$frac{n^{2i}-n^{2j}}{n^{i}+n^{-n}-n^{j}}=frac{n^{2i}-n^{2k}}{n^{i}+n^{-n}-n^{k}}$.令$a=n^{2i},b=n^{i}+n^{-n}$.化简一下可以得到:$(n^{j}-n^{k})(a-b(n^{j}+n^{k})+n^{j+k})=0$.后面这个式子不会等于0,因为$a+n^{j+k}$是整数,而$b(n^{j}+n^{k})$是个小数.所以假设错误.

    19,首先,所有的顶点都在$x$轴上.假设第一个的一条边在$y$轴,另一条边与$x$轴夹角120度,顶点在原点.那么后面每条边的顶点沿着$x$轴正半轴逐渐增大.那么可以推出第二个的左侧的边与$x$轴的夹角大于150度,第三个大于180度,第四个大于210度,第五个大于240度,如果有第六个,那么大于270度,这时候与第一个没有四个交点了.所以最多5个.

    20、令$h(n)=A(n)alpha +B(n)gamma _{0}+C(n)gamma _{1}+D(n)eta _{0}+E(n)eta _{1}$,$n=(1b_{m-1}b_{m-2}...b_{2}b_{1}b_{0})_{2}$

    (1)令$alpha=1,gamma _{0}=gamma _{1}=eta _{0}=eta _{1}=0$,可得到$A(n)=4^{m}$

    (2)令$alpha=eta _{0}=1,gamma _{0}=gamma _{1}=eta _{1}=0$,可得到$D(n)=sum_{i=0}^{m-1}4^{i}(1-b_{i})$

    (3)令$alpha=eta _{1}=1,gamma _{0}=gamma _{1}=eta _{0}=0$,可得到$E(n)=sum_{i=0}^{m-1}4^{i}b_{i}$

    (4)令$alpha=gamma _{0}=1,eta _{1}=gamma _{1}=eta _{0}=0$,可得到$B(n)=sum_{i=0}^{m-1}4^{i}left lfloor frac{n}{2^{i}} ight floor(1-b_{i})$

    (5)令$alpha=gamma _{1}=1,eta _{1}=gamma _{0}=eta _{0}=0$,可得到$C(n)=sum_{i=0}^{m-1}4^{i}left lfloor frac{n}{2^{i}} ight floor b_{i}$

    21、如果删除的序列是确定的话,那么可以得到若干个模方程。假设$n=3$:

    (1)删除的序列是4,5,6,那么有$m$%6=4, $m$%5=1, $m$%4=3,可以看出满足这样的$m$是不存在的,因为$m$%6=4要求$m$是偶数,而$m$%4=3要求$m$是奇数。
    (2)删除的序列是5,4,6,那么有$m$%6=5, $m$%5=0, $m$%4=1,可以看出满足$m=5$可以满足要求,其实所有的$60k+5$都是满足的;

    依次算下去有很多种,也就是有可能有很多种答案。但是一定有一个答案是$m=LCM(n+1,n+2,...,2n)$。因为可以从$2n$到$n+1$逆序删掉.这时候要求$m$是$n+1,n+2,..,2n$的最小公倍数。

    22、这里有个叫做德布鲁因序列的东西。它的含义是可以构造一个有$k$种字符组成的长度为$k^{n}$的环形序列,使得任意连续的$n$个字符组成的子串两两不同。比如$k=2,n=4$,那么这个序列为0000111101100101.这$2^4$种子串恰好是长度为4的01串的所有情况。

    对于这个题目,对于$n$来说,可以首先构造一个$2^{n}$的凸多边形,然后为每个边附一个值0或者1,附的值满足它们是一个德布鲁因序列。然后为每个1的边上粘贴一个非常细窄的三角形(这时候它就不是$2^{n}$条边了),且这些三角形各不相同(防止旋转之后完全重合),然后分别将这个多边形旋转$0,1,2,...,n-1$次得到$n$个多边形,那么这$n$个多边形此时就构造了一个$2^{n}$的韦恩图。

    23、首先令$L(n)=Lcm(1,2,3,...,n-1,n)$,假设$n>2$($n$<=2是情况比较简单).另外有个贝特朗假设,它是说对于任意的整数$t$满足$[t,2t]$之间存在至少一个素数。所以在$[frac{n}{2},n]$之间一个存在一个素数$p$。下面分两种情况:

    (1)$jgeq frac{n}{2}$.这时候可以取$q$满足如何关系:$qequiv 1(modleft (frac{L(n)}{p}  ight )),qequiv j+1-n(mod left (p  ight ))$。这时候将依次删掉$1,2,...,n-p,j+1,j+2,...n-1,n,n-p+1,n-p+2,...,j-2,j-1$.这分为三段,第一段是$1,2,...,n-p$,因为对于任意的$p<xleq n$来说,$qequiv 1(modleft ( x ight ))$,接下来第二段$j+1$.当$x=p$时出现一个跳变,因为$qequiv j+1-n(mod left (p  ight ))$,其实就是跳到第$j+1-n+p$,因为$j+1-n<0$。而删掉了前$n-p$个后,$j$是第$j-(n-p)$,所以现在恰好跳到$j$后面1个的位置上,即$j+1$。剩下的最后一段。因为对于任意的$2leq x<p$有$qequiv 1(modleft ( x ight ))$

    (2)$j<frac{n}{2}$,这时候这时候令$j^{'}=n+1-j$时按照步骤(1)计算出$q$,那么此时的$q^{'}=L(n)+1-q$可以保证最后剩下$j$,因为删掉的序列依次是$n,n-1,...,p+1,j-1,j-2,...,2,1,p,p-1,...,j+2,j+1$

    24、满足条件的一个序列为$X_{n}=2isinpi r+frac{1}{X_{n-1}}$,其中$0leq r<frac{1}{2}$。比如$r=frac{1}{3}$时周期为6,$r=frac{1}{4}$时周期为4,$r=frac{1}{5}$时周期为10.

    $sin^{2}frac{pi }{n}=frac{1-cosfrac{2pi }{n} }{2}$

    $cos^{2}frac{pi }{n}=frac{1+cosfrac{2pi }{n} }{2}$

    随着$n$的增大,不停用上面两个公式展开其中的sin部分,最后到$cospi ,cos2pi $时会消掉角度的部分。当恰好满足虚部系数为0,实部为$X_{0}$时即得到一个循环。

    25、假设$F_{k}$表示将$n$个盘子通过辅助的$k$个盘子从A柱子移动到B柱子的最少次数.比如$F_{1}(n)=T(n)=2^{n}-1,F_{2}(n)=W(n)$.对于$inom{n+1}{c}$个盘子来说,由于$inom{n+1}{c}=inom{n}{c}+inom{n}{c-1}$,可以分为三步:

    (1)将上面的$inom{n}{c}$个盘子通过$k$个辅助柱子从A移动到$k$个柱子上的某一个,比如第$t$个;

    (2)将A上剩下的$inom{n}{c-1}$个盘子通过$k-1$个辅助柱子从A移动到$C$;

    (3)将第$t$个柱子上的$inom{n}{c}$个盘子通过包括A在内的$k$个辅助柱子移动到$C$.

    所以$F_{k}left (inom{n+1}{c}  ight )=2F_{k}left (inom{n}{c}  ight )+F_{k-1}left (inom{n}{c-1}  ight )$

    26、我的猜测是,对于大的$n$,非约瑟夫子集应很多。纯属猜测。不过对于$nequiv 0(modleft ( 3 ight )),n>9$时一定有大小为$n-4$的非约瑟夫子集,我写了一个程序进行了验证。比如$n=12$时,不可能使得下面的四元组中的人成为坏人:{1,3,5,7},{1,3,6,11},{1,4,6,8},{1,7,9,11},{2,4,6,12},{2,7,10,12},{3,4,9,10},{5,7,9,12},{6,8,10,12}.

    #include <algorithm>
    #include <iostream>
    #include <vector>
    
    int ExtendGcd(int a, int b, int *x, int *y) {
      if (b == 0) {
        *x = 1;
        *y = 0;
        return a;
      }
      int d = ExtendGcd(b, a % b, x, y);
      int t = *x;
      *x = *y;
      *y = t - a / b * *y;
      return d;
    }
    
    bool Modular(std::vector<int> a, std::vector<int> m) {
      const int k = static_cast<int>(a.size());
    
      for (int i = 1; i < k; ++i) {
        int x, y;
        int d = ExtendGcd(m[0], m[i], &x, &y);
        int c = a[i] - a[0];
        if (c % d) return false;
        int t = m[i] / d;
        x = (c / d * x % t + t) % t;
        a[0] = m[0] * x + a[0];
        m[0] = m[0] * m[i] / d;
      }
      return true;
    }
    
    bool IsBad(std::vector<int> bad, int n) {
      do {
        std::vector<int> d;
        std::vector<int> r;
        std::vector<int> remain(n + 1, 1);
    
        auto Next = [&](int k) {
          if (k > n) {
            k = 1;
          }
          while (remain[k] == 0) {
            if (++k > n) {
              k = 1;
            }
          }
          return k;
        };
        int current = 1;
        for (int i = 0; i < 4; ++i) {
          int cnt = 1;
          while (current != bad[i]) {
            ++cnt;
            current = Next(++current);
          }
          d.push_back(n - i);
          r.push_back(cnt % (n - i));
          remain[current] = 0;
          current = Next(++current);
        }
        if (Modular(r, d)) {
          return false;
        }
      } while (next_permutation(bad.begin(), bad.end()));
      return true;
    }
    
    int main() {
      int n;
      while (std::cin >> n) {
        if (n % 3 != 0 || n < 9) {
          std::cout << "Data error: n % 3 = 0 && n >= 9
    ";
          continue;
        }
        for (int i = 1; i <= n; ++i) {
          for (int j = i + 1; j <= n; ++j) {
            for (int k = j + 1; k <= n; ++k) {
              for (int t = k + 1; t <= n; ++t) {
                if (IsBad({i, j, k, t}, n)) {
                  std::cout << "No way to let these four to be bad: " << i << " "
                            << j << " " << k << " " << t << '
    ';
                }
              }
            }
          }
        }
      }
      return 0;
    }
    

      

  • 相关阅读:
    CentOS 编译安装 MySQL5.7
    ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var mysql 启动不了
    Linux里如何查找文件内容
    linux怎么模糊查找一个文件
    centos7下使用yum安装mysql
    centos下完全卸载mysql
    Linux下安装配置Nexus
    Linux下建立Nexus私服
    阿里云主机上安装jdk
    java war run
  • 原文地址:https://www.cnblogs.com/jianglangcaijin/p/9029213.html
Copyright © 2020-2023  润新知