建议以及感受
- 比赛当天网站直接崩溃,体验极差,直到中午才修好
- 有些题意的输入输出并不明确
- 在线IDE不完善也不好用,很多bug详见竞赛讨论贴
- 完赛没有官方题解,或者说讨论题解的人很少
- 领取奖励还需要撰写一篇比赛相关的博客,有点捆绑的意思,初心可能是为了让大家写题解?
- 总共参加三次竞赛感受都不好,暂时不会参加CSDN竞赛了,转力扣
题解
题目一
寻找因子个数为n的最小整数x
输入描述:输入整数n。(1<=n<=1000)
输出描述:输出x。
示例1:
输入 3,输出 4;
解释:因子个数为3的最小整数为4,4具有3个因数,分别为:1,2,4
#include<iostream> #include<cstring> using namespace std; int ans[1000010],cnt[1000010]; int main (){ std::ios::sync_with_stdio(false); memset(ans,-1,sizeof(ans)); for(int i = 1; i <= 1000005;i++){ for(int j = i;j <= 1000005;j+=i){ cnt[j]++; } if(ans[cnt[i]]==-1) ans[cnt[i]]=i; } int n; cin>>n; cout<<ans[n]<<endl; }
题目二
X国发行货币最高面额为n。 次高面额为n的因子。 以此类推。 X国最多发行多少种货币。
输入描述:输入整数n。(1<=n<=1000000) 表示货币的最大面额
输出描述:输出货币的种类。
示例1:输入 10,输出 3
import java.util.ArrayList; import java.util.Scanner; class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String str_0 = scan.nextLine().trim(); int n = Integer.parseInt(str_0); scan.close(); int result = solution(n); System.out.println(result); } public static int solution(int n) { int result = 0; while (n != 1) { result++; for (int i = 2; i <= n; i++) { if (n % i == 0) { n /= i; break; } } } result++; return result; } }