历年noip错题整理

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

完善程序

(最大公约数之和)下列程序想要求解整数

上一篇:NOIP模拟62


下一篇:NOIP模拟66