zoukankan      html  css  js  c++  java
  • CCF201712-Python题解

    最小差值

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

    试题编号: 201712-1
    试题名称: 最小差值
    时间限制: 1.0s
    内存限制: 256.0MB
    问题描述
      给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。
    输入格式
      输入第一行包含一个整数n
      第二行包含n个正整数,相邻整数之间使用一个空格分隔。
    输出格式
      输出一个整数,表示答案。
    样例输入
    5
    1 5 4 8 20
    样例输出
    1
    样例说明
      相差最小的两个数是5和4,它们之间的差值是1。
    样例输入
    5
    9 3 6 1 3
    样例输出
    0
    样例说明
      有两个相同的数3,它们之间的差值是0.
    数据规模和约定
      对于所有评测用例,2 ≤ n ≤ 1000,每个给定的整数都是不超过10000的正整数。
     
    题解暴力模拟,寻找每个数的最小差值,最后找min(每个数的最小 )
     1 n=int(input())
     2 a=list(map(int, input().split()))
     3 
     4 minn=10001
     5 for i in range(n):
     6     for j in range(i+1,n):
     7         tmp=abs(a[i]-a[j])
     8         if tmp<minn:
     9             minn=tmp
    10 print(minn)     

     游戏

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

    试题编号: 201712-2
    试题名称: 游戏
    时间限制: 1.0s
    内存限制: 256.0MB
    问题描述:
    问题描述
      有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向。
      游戏开始,从1号小朋友开始顺时针报数,接下来每个小朋友的报数是上一个小朋友报的数加1。若一个小朋友报的数为k的倍数或其末位数(即数的个位)为k,则该小朋友被淘汰出局,不再参加以后的报数。当游戏中只剩下一个小朋友时,该小朋友获胜。
      例如,当n=5, k=2时:
      1号小朋友报数1;
      2号小朋友报数2淘汰;
      3号小朋友报数3;
      4号小朋友报数4淘汰;
      5号小朋友报数5;
      1号小朋友报数6淘汰;
      3号小朋友报数7;
      5号小朋友报数8淘汰;
      3号小朋友获胜。

      给定nk,请问最后获胜的小朋友编号为多少?
    输入格式
      输入一行,包括两个整数nk,意义如题目所述。
    输出格式
      输出一行,包含一个整数,表示获胜的小朋友编号。
    样例输入
    5 2
    样例输出
    3
    样例输入
    7 3
    样例输出
    4
    数据规模和约定
      对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ k ≤ 9。

     题解:模拟报数的整个过程,这里用列表模拟

     1 n, k = input().split()
     2 n, k = int(n), int(k)
     3 
     4 
     5 c = []
     6 num=1
     7 count=0
     8 for i in range(n):
     9     c+=[[num,1]]
    10     num+=1
    11     if(c[i][0]%k==0 or c[i][0]%10==k)and count!=n-1:
    12         c[i][1]=0
    13         count+=1
    14             
    15 
    16 while(count<n-1):
    17     for i in range(n):
    18         if(c[i][1]==1) and count!=n-1:
    19             c[i][0]=num
    20             num+=1
    21             if(c[i][0]%k==0 or c[i][0]%10==k)and count!=n-1:
    22                 c[i][1]=0
    23                 count+=1
    24     
    25 for i in range(n):
    26     if c[i][1]==1:
    27         print(i+1)
    28         break
    29     

     每次写,每次不同的写法

     1 n,k=input().split()
     2 n,k=int(n),int(k)
     3 
     4 a=[]
     5 num=n
     6 count=n
     7 for i in range(1,n+1):
     8     a+=[[1,i]]
     9     if (i%k==0 or i%10==k) and count!=1:
    10         a[i-1][0]=0
    11         count-=1
    12 
    13 while count!=1:
    14     for i in range(n):
    15         if a[i][0]==1:
    16             num+=1
    17             if num%k==0 or num%10==k:
    18                 a[i][0]=0
    19                 count-=1
    20 
    21 for i in range(n):
    22     if a[i][0]==1:
    23         print(a[i][1])
    View Code
  • 相关阅读:
    素材收集
    网站返回503
    uva 1048 最短路的建图 (巧,精品)
    hdu5188 01 背包
    hdu 5187 快速幂 + 快速乘 值得学习
    差分约束
    uva11090 Bellman-Ford 运用
    hdu 5185 动态规划 分析降低复杂度
    hdu5184 数论证明
    HDU5183 hash 表
  • 原文地址:https://www.cnblogs.com/z-712/p/13525966.html
Copyright © 2011-2022 走看看