NOIP 普及组初赛 · NOIP 2008 普及组初赛试题 第 23 题

阅读程序 · 答案 23 · 考点:输入输出、位运算、分支结构、循环结构

← 整套速查表 NOIP 普及组初赛 全部真题

题目

阅读程序写结果:

#include<iostream>
using namespace std;
int main()
{
	int i, a, b, c, d, f[4];
	for(i = 0; i < 4; i++) cin >> f[i];
	a = f[0] + f[1] + f[2] + f[3];
	a = a / f[0];
	b = f[0] + f[2] + f[3];
	b = b / a;
	c = (b * f[1] + a) / f[2];
	d = f[(b / c ) % 4];
	if(f[(a + b + c + d) % 4] > f[2])
		cout << a + b<< endl;
	else 
		cout << c + d << endl;
	return 0;
}

输入:9 19 29 39

答案:23

考点

输入输出位运算 讲解 →位运算 真题汇总 →分支结构循环结构

解题思维

看到整数除法 → 先想舍去小数;看到取模 → 先算整除再取余;看到 if 下标 → 先算总和再取模。

常见错误

整数除法易被当成浮点运算;取模顺序易错为 b/(c%4);if 下标漏加 a,b,c 导致越界。

详细解析(节选)

考点:程序模拟|整数运算

程序在做什么

输入四个数到数组 f,按公式依次计算 a、b、c、d,最后根据 if 条件输出 a+b 或 c+d。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断