建议以及感受
比赛当日网站崩溃,页面都进不去,体验极差,但好在后来修复bug后延长了参加时间。
总的来说,能感受到 CSDN 越来越重视自己举办的编程竞赛了,虽然比不上力扣,牛客,洛谷等这些网站。希望 CSDN 能请一些专业的出题人,或者找一些大厂的笔试算法题(最好改编一下别直接原题),能对参赛者有实际提升价值的比赛才算是好的比赛,最好照顾到不同级别的选手,难易程度要把握好,此外就没有什么大的建议了,CSDN 本质是博客技术网站,举办编程竞赛无可厚非,但既然要做就请一定要做好。
祝 CSDN 越办越好
题目
1、题目名称:寻因找祖
寻找因子个数为n的最小整数x.
我只拿了70%部分分,就是纯暴力,统计之后找最小的
代码示例
#include<iostream>
#include<cmath>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 2e6 + 10;
int n;
int minn[maxn];
int cnt[maxn];
int main(){
cin >> n;
memset(minn, -1, sizeof(minn));
for(int i = 1; i < maxn; i++){
for(int j = i; j < maxn; j+=i){
cnt[j]++;
}
}
for(int i = 1; i < maxn; i++) if(minn[cnt[i]] == -1) minn[cnt[i]] = i;
cout << minn[n] << endl;
}
2、题目名称:通货膨胀-x国货币
X国发行货币最高面额为n。 次高面额为n的因子。 以此类推。 X国最多发行多少种货币。
最多发行多少种货币,就表示最多有几个因子,直接统计就可以了
#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n;
int main(){
cin >> n;
int res=0;
for(int i=2;i*i<=n;i++){
if(n%i==0){
int cnt=0;
while(n%i==0){
cnt++;
n/=i;
}
res+=cnt;
}
}
if(n>1)res++;
cout<<res+1;
}
3、题目名称:莫名其妙的键盘
有一个神奇的键盘,你可以用它输入a到z的字符,然而每当你输入一个元音字母(a,e,i,o,u其中之一)的时候,已输入的字 符串会发生一次反转! 比方说,当前输入了tw,此时再输入一个o,此时屏幕上的字符串two会反转成owt。 现给出一个 字符串,若用该键盘输入,有多少种方法可以得到?
不会,没写
4、题目名称:三而竭
一鼓作气再而衰三而竭。 小艺总是喜欢把任务分开做。 小艺接到一个任务,任务的总任务量是n。 第一天小艺能完成x份 任务。 第二天能完成x/k。 。。。 第t天能完成x/(k^(t-1))。 小艺想知道自己第一天至少完成多少才能完成最后的任务。
二分答案
#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
using namespace std;
int n,k;
bool judge(int x){
long long now = 0;
while(x){
now += x;
x /= k;
}
if(now >= n) return 1;
return 0;
}
int main() {
cin >> n >> k;
int l = 0,r = 1000000000;
while(l < r){
int mid = (l+r)/2;
if(judge(mid)){
r = mid;
}
else{
l = mid+1;
}
}
cout << r;
return 0;
}