为了帮助大家战胜每周霸榜的卷王,贡献自己的一份力量
##第三题
涉及的是散列函数:除留余数法,暴力的解法就是挨个试,暂时还没想到更便捷的解法,大家可以可以copy过去直接运行:
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int n;
cin>>n;
int *parray=new int[n];
for(int i=0;i<n;i++){
cin>>parray[i];
}
bool flag = true;
int mod = 1;
while(flag){
int judge[1000] = {0};
bool success = true;
for (int i=0;i<n;i++){
int pos = parray[i] % mod;
if (judge[pos]!=0){
success = false;
break;
}
else{
judge[pos] = 1;
}
}
if (success == true){
flag = false;
}
else{
mod+=1;
}
}
cout<<mod;
return 0;
}
##第四题
这道题的解法是下面代码,其实逻辑还是挺清楚的。
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int n;
int m;
cin>>n>>m;
int num = n/m;
int let = n%m;
if (let==0){
cout<<num;
}else{
cout<<num+1;
}
return 0;
}
##第五题
具体解法就是看成一个排列的问题:
#include<bits/stdc++.h>
using namespace std;
long long factorial(int n,int t)
{
long long m = 1;
for (int i = 0; i < t; i++){
m *= (n-i);
}
return m;
}
int main( )
{
int n,k,w;
cin>>n>>k>>w;
long long res = factorial(k,3*w);
cout<<res;
return 0;
}