2020CSP普及组初赛完善程序
2020CSP普及组初赛完善程序
完善程序
1.(质因数分解)
给出正整数 n,请输出将 n 质因数分解的结果,结果从小到大输出。 例如:输入 n=120,程序应该输出 2 2 2 3 5,表示:120 = 2 × 2 × 2 × 3 × 5。输入保证 \(2≤n≤10^9\)。提示:先从小到大枚举变量 i,然后用 i 不停试除 n来寻找所有的质因子。
试补全程序
#include <cstdio>
using namespace std;
int n, i;
int main() {
scanf("d", &n);
for(i = ①; ② <=n; i ++){
③{
printf("%d ", i);
n = n / i;
}
}
if(④)
printf("%d ", ⑤);
return 0;
}
1)①处应填( )
2)②处应填( )
3)③处应填( )
4)④处应填( )
5)⑤处应填( )
A. 1
B. n-1
C. 2
D. 0
A. n / i
B. n / (i * i)
C. i * i
D. i * i *i
A. if(n%i==0)
B. if(i * i <= n)
C. while(n%i==0)
D. while(i*i<=n)
A. n>1
B. n<=1
C. i<n/i
D. i+i<=n
A. 2
B. n/i
C. n
D. i
2.(最小区间覆盖)
给出 n 个区间,第 i 个区间的左右端点是\([a_i,b_i]\)。现在要在这些区间中选出若干个,使得区间 [0, m] 被所选区间的并覆盖(即每一个 0≤i≤m 都在某个所选的区间中)。保证答案存在,求所选区间个数的最小值。
输入第一行包含两个整数 n 和 m ( \(1≤n≤5000,1≤m≤10^9\)) 接下来 n 行,每行两个整数 (\(0≤a_i,b_i≤m\))。
提示:使用贪心法解决这个问题。先用 \(O(n^2)\)的时间复杂度排序,然后贪心选择这些区间。
试补全程序。
#include <iostream>
using namespace std;
const int MAXN = 5000;
int n, m;
struct segment { int a, b; } A[MAXN];
void sort() // 排序
{
for (int i = 0; i < n; i++)
for (int j = 1; j < n; j++)
if (①)
{
segment t = A[j];
②
}
}
int main()
{
cin >> n >> m;
for (int i = 0; i < n; i++)
cin >> A[i].a >> A[i]?b;
sort();
int p = 1;
for (int i = 1; i < n; i++)
if (③)
A[p++] = A[i];
n = p;
int ans =0, r = 0;
int q = 0;
while (r < m)
{
while (④)
q++;
⑤;
ans++;
}
cout << ans << endl;
return 0;
}
1)①处应填( )
2)②处应填( )
3)③处应填( )
4)④处应填( )
5)⑤处应填( )
A. A[j].b>A[j-1].b
B. A[j].a<A[j-1].a
C. A[j].a>A[j-1].a
D. A[j].b<A[j-1].b
A. A[j+1]=A[j];A[j]=t;
B. A[j-1]=A[j];A[j]=t;
C. A[j]=A[j+1];A[j+1]=t;
D. A[j]=A[j-1];A[j-1]=t;
A. A[i].b>A[p-1].b
B. A[i].b<A[i-1].b
C. A[i].b>A[i-1].b
D. A[i].b<A[p-1].b
A. q+1<n&&A[q+1].a<=r
B. q+1<n&&A[q+1].b<=r
C. q<n&&A[q].a<=r
D. q<n&&A[q].b<=r
A. r=max(r,A[q+1].b)
B. r=max(r,A[q].b)
C. r=max(r,A[q+1].a)
D. q++
作者:newcode 更多资源请关注纽扣编程微信公众号

从事机器人比赛、机器人等级考试、少儿scratch编程、信息学奥赛等研究学习

浙公网安备 33010602011771号