【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 }
第二题:最小差值
题目:
题意: 同样很清晰不再赘述。但是这里看清楚,不是约瑟夫环。里面有一个当前数的余数为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 }
第三题:corntab
题目:
题意:
题解:
代码: