15 条题解
-
2
孩子们,上菜 咯
#include <bits/stdc++.h> using namespace std; int isprime(int n) { for (int i = 2; i < n; i++) { if (n % i == 0) { return false; } } return true; } int main() { int n, k, a[10005]; cin >> n >> k; for (int i = 1; i <= n; i++) { cin >> a[i]; } sort (a + 1, a + n + 1); int m = a[n - k + 1] - a[k]; if (isprime(m)) { cout << "YES" << endl << m; } else { cout << "NO" << endl << m; } return 0; }
🍳明了
-
2
就这样吧
#include <bits/stdc++.h> using namespace std; int main() { int n,k,a[10000]; cin>>n>>k; for(int i=1;i<=n;i++) { cin>>a[i]; } sort(a+1,a+1+n);//用sort函数从小到大排序 int m=a[n-k+1]-a[k];//求出第k大与第k小的差 !注意:第k大是n-k+1 bool flag=true; for(int i=2;i<m;i++) { if(m%i==0) { flag=false; break; } } if(flag==true)//判断输出 { cout<<"YES"<<endl<<m; } else { cout<<"NO"<<endl<<m; } return 0; }
-
2
for (int i=1;i<=n;i++)//输入数组 cin>>a[i]; sort(a+1,a+n+1);//sort函数排序 int m=a[n-k+1]-a[k];//计算m bool flag=1;//定义一个bool类型函数flag for (int i=2;i*i<=m;i++)//判断是否为质数 { if (m%i==0) { flag=0;//如果是,flag=0并跳出循环 break; } } if (flag)//输出答案第一行 { cout<<"YES"<<'\n'; } else { cout<<"NO"<<'\n'; } cout<<m;//输出m
-
1
题目要求:找出n个序列中第k个最大值和第k个最小值的差m,并判断m是否为质数。
注意题目未提示是有序数组,因此需要先用sort函数进行排序,排序结束之后就可以知道:m=a[n-k+1]-a[k]注意数组下标是从1开始的哈。求出m的值之后进行质数的判断即可。注意最小的质数是2,所以要提前去判断m是否为2。
代码如下:
for(int i=1;i<=n;i++) { cin>>a[i]; //输入 } sort(a+1,a+n+1); //sort函数排序。 m=a[n-k+1]-a[k]; //求出m的值 if(m==2) //去除掉m为2。 { cout<<"YES"<<endl<<m; } else { for(int i=2;i<m;i++) //求质数 { if(m%i==0) { cout<<"NO"<<endl<<m; return 0; //如果不满足直接输出并结束函数。 } } cout<<"YES"<<endl<<m; }
-
0
#include <bits/stdc++.h> using namespace std; int main() { int n,a[10005],k,sum,ans=0; cin>>n>>k; for(int i=1;i<=n;i++) { cin>>a[i]; } sort(a+1,a+n+1); sum=a[n-1]-a[2]; for(int i=2;i<=sum-1;i++) { if(sum%i==0) { ans++; } } if(ans==0) { cout<<"YES"<<endl<<sum; } else { cout<<"NO"<<endl<<sum; } }
-
0
过辣!
#include <bits/stdc++.h> using namespace std; bool prime(int n) { for (int i=2;i<n;i++) { if (n%i==0)return false; } return true; } int main() { int n,k,c,d; scanf("%d %d",&n,&k); int a[n+1]; for (int i=1;i<=n;i++)scanf("%d",&a[i]); sort(a+1,a+n);//升序 d=a[k]; sort(a+1,a+n,greater<int>());//降序 c=a[k-1]; if (prime(c-d))cout<<"YES"<<endl<<c-d; else cout<<"NO"<<endl<<c-d; return 0; }
-
0
#include <cstdio> #include <algorithm> using namespace std; bool prime(int x){ if(x<2)return false; for(int i=2;i<x;i++)if(x%i==0)return false; return true; } int main(){ int n,k,m,a[10001]; scanf("%d%d",&n,&k); for(int i=1;i<=n;i++)scanf("%d",&a[i]); sort(a+1,a+n+1); m=a[n-k+1]-a[k]; prime(m)?printf("YES\n"):printf("NO\n"); printf("%d\n",m); return 0; }
-
0
请问各位,我程序哪里错了? 注意!!WA产物,请谨慎食用
#include <iostream> #include <algorithm> using namespace std; bool prime(int x){ if(x<2)return false; else for(int i=2;i<x;i++)if(x%i==0)return false; return true; } int main(){ int n,k,m,a[10000]; cin>>n>>k; for(int i=0;i<n;i++)cin>>a[i]; sort(a,a+n); m=a[n-k]-a[k+1]; prime(m)?cout<<"YES"<<endl:cout<<"NO"<<endl; cout<<m<<endl; return 0; }
-
0
#include<iostream> #include<algorithm> using namespace std; int main() { int n, a[10005], k, m; cin >> n >> k; for(int i = 1;i <= n;i++) { cin >> a[i]; } sort(a+1,a+n+1); m = a[n+1-k]-a[k]; bool flage = true; for(int i = 2;i < m;i++) { if(m % i == 0) { flage = false; break; } } if(flage == true) { cout << "YES"<<endl<<m; } else { cout <<"NO"<<endl<<m; } return 0; } 自己做的,仅供参考
-
0
#include <iostream>//hetao3097453 #include <algorithm> using namespace std; int a[10001]; bool zhishu(int n)//判断质数函数 { if(n == 1)//1不是 { return false; } else if(n == 2)//2不是 { return false; } else { for(int i = 2;i < n;i++) { if(n % i == 0) { return false; } } return true; } } int main() { int n,k,maxk = 0,mink = 0; cin >> n >> k; for(int i = 1;i <= n;i++) { cin >> a[i]; } sort(a + 1,a + n + 1); mink = a[k];//第k小 maxk = a[n - k + 1];//第k大 int m = maxk - mink;//差 if(zhishu(m))//真 { cout << "YES" << endl; cout << m << endl; } else//假 { cout << "NO" << endl; cout << m << endl; } return 0; }
(放心食用)
-
0
#include <iostream> #include <algorithm> using namespace std; int n, x, a[101], k; void prime(int n) { for (int i = 2; i < n; i++) { if (n % i == 0) { cout << "NO" << endl; return; } } cout << "YES" << endl; } int main() { cin >> n >> k; for (int i = 1; i <= n; i++) { cin >> a[i]; } sort(a + 1, a + n + 1); x = a[n - k + 1] - a[k]; prime(x); cout << x; return 0; }
-
-1
#include<iostream> using namespace std; int main() { int n,k; bool b=true; cin>>n>>k; int a[n]; for(int i=0;i<n;i++) { cin>>a[i]; } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(a[i]>a[j]) { int temp=a[i]; a[i]=a[j]; a[j]=temp; } } } int m=a[k-1]-a[n-k-1]; for(int i=2;i<m;i++) { if(m%i==0) { b=false; break; } } if(b==true) { cout<<"YES"<<endl<<m; } else { cout<<"NO"<<endl<<m; } return 0; }
- 1
信息
- ID
- 242
- 时间
- 1000ms
- 内存
- 32MiB
- 难度
- 4
- 标签
- 递交数
- 1224
- 已通过
- 571
- 上传者