FIRST. Noip2018普及组初赛错题
noip2018j T12:
设含有10个元素的集合的全部子集数为S,其中有7个元素组成的子集数为T,则T/S的值为()
A. 5/32
B. 15/128
C. 1/8
D. 21/128
\(T=C_{10}^7=C_{10}^3=\dfrac{10*9*8}{3*2*1}=120\)
\(S=C_{10}^1+C_{10}^2+C_{10}^3+......+C_{10}^{10}=1024\)
\(T/S=120/1024=5/128\)
故答案为B.
noip2018j T4
广域网的英文缩写是( )
A. LAN
B. WAN
C. MAN
D. LNA
广域网(WAN,Wide Area Network)也称远程网(long haul network )。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个城市或国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。
局域网(LAN,Local Area Network)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。
城域网(MAN,Metropolitan Area Network)是在一个城市范围内所建立的计算机通信网,属宽带局域网。
故答案为B.
noip2018j T14
为了统计一个非负整数的二进制形式中 1 的个数,代码如下:
int CountBit(int x)
{
int ret = 0;
while (x)
{
ret++;
___________;
}
return ret;
}
A. x >>= 1
B. x &= x - 1
C. x |= x >> 1
D. x <<= 1
简单来说,当二进制数减1时,处在最后的一个位会减少1,如果这位本身就是1,那么直接变成0:
如\(10101\)-->\(10100\);
但如果最后一个是0,那么套用从上一位借一个的原则;
如\(10100\)-->\(10011\);
到这里我发现了,相当于从右往左的第一个1会让剩下的所有0再变成1;
相当于把这一个减的操作从这一个1处截断,应为当前是0时只会往上1位去借,那么这一位是1时往下借,后面一定全部是0
然后我们进行和原来一个数的与操作,就会使得这一个1连同其后的所有位变成0,而更高的位数不会受到影响.
故答案为B.
2018noipj T17
从 1 到 2018 这 2018 个数中,共有__________个包含数字 8 的数。
只有 1 个 8 :
_ _ _ 8:\(\quad2*9*9+2=164\)(个)
_ _ 8 _:\(\quad2*9*9=162\)(个)
共: \(164+162*162=488\)(个)
只有 2 个 8 :
_ _ 8 8: \(\quad2*9=18\)(个)
_ 8 8 _: \(\quad2*9=18\)(个)
_ 8 _ 8: \(\quad2*9=18\)(个)
共: \(18*3=54\)(个)
只有3个 8 :
_ 8 8 8: \(\quad2\)(个)
共: \(2个\)
共: \(488+2+54=544\)(个)
故答案为4.
2018noipj T19
阅读程序写结果
#include <stdio.h>
int main() {
int x;
scanf("%d", &x);
int res = 0;
for (int i = 0; i < x; ++i) {
if (i * i % x == 1) {
++res;
}
}
printf("%d", res);
return 0;
}
输入:15
输出:__________
i | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
\(i^2\) | 0 | 1 | 4 | 9 | 16 | 25 | 36 | 49 | 64 | 81 | 100 | 121 | 144 | 169 | 196 |
\(i^2mod 15\) | 0 | 1 | 4 | 9 | 1 | 10 | 6 | 4 | 4 | 6 | 10 | 1 | 9 | 4 | 1 |
求\(15^2\)以内的完全平方数有多少个模\(15\)余\(1\),
故答案为4.
noip2018j T22
完善程序
(最大公约数之和)下列程序想要求解整数