【csp】2017-12

第一题:游戏

题目:

题意:啊,不多赘述。看的懂。

题解:sort一下直接暴力比较大小。

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cmath>
 5 #include<queue>
 6 #include<stack>
 7 #include<cstring>
 8 using namespace std;
 9 #define ll long long 
10 #define INF 0x3f3f3f3f
11 const int maxn = 100+10;
12 
13 
14 int a[maxn];
15 
16 
17 int main(){
18     int n;
19     cin>>n;
20 
21     for(int i = 0 ; i < n ;i++){
22         cin>>a[i];
23     }
24     
25     sort(a,a+n);
26     int minn = INF;
27     for(int i = 0; i < n-1 ;i++){
28         if(a[i+1] - a[i] < minn){
29             minn = a[i+1] - a[i];
30         }
31     }
32     cout<<minn<<endl;
33 
34 
35     return 0;
36 }
View Code

第二题:最小差值

题目:

题意: 同样很清晰不再赘述。但是这里看清楚,不是约瑟夫环。里面有一个当前数的余数为k也算输。

题解: 计数当前的数字,每一个小朋友都做标记,暴力循环做。最后还剩下一个人的时候就输出结果。这里有个坑,就是说应该特判一下k==1的时候,直接输出n.

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cmath>
 5 #include<queue>
 6 #include<stack>
 7 #include<cstring>
 8 using namespace std;
 9 #define ll long long 
10 #define INF 0x3f3f3f3f
11 const int maxn = 1000+10;
12 int flag[maxn];
13 
14 int main(){
15     int n,k;
16     cin>>n>>k;
17     int cnt = 1;
18     int count = 0;
19     if(k == 1){
20         cout<<n<<endl;
21     }
22     while(count < n-1){
23         for(int i = 1; i <= n; i++){
24             if(flag[i])
25                 continue;
26             else{
27                 if(cnt % k == 0 || cnt % 10 == k){
28                     flag[i] = 1;
29                     cnt++;
30                     count++;
31                 }
32                 else{
33                     cnt++;
34                 }
35             }            
36         }
37         //cout<<count<<" "<<cnt<<endl;
38     }
39     for(int i = 1; i <= n ;i++){
40         if(flag[i] == 0){
41             cout<<i<<endl;
42         }
43     }
44     return 0;
45 }
View Code

第三题:corntab

题目:

意:

题解:

代码:

原文地址:https://www.cnblogs.com/Asumi/p/9606868.html