CF231D题解

CF231D题解

题意

给你一个长方体的长,宽,高,再给你一个观测坐标和每一面的上面的数字,问在这个观测点看到的数字之和是多少?

输入顺序

  1. 观测的坐标(xyz)。
  2. 长方体的长,宽,高。(x 轴边长,y 轴边长,z 轴边长)
  3. 长方体每个面上的数(ZOX,ZOX 的对面,XOY,XOY 的对面,YOZ,YOZ 的对面)

(上述中的坐标轴参考下图)

思路

本题思路很简单。其实就是一面一面的判断是否可以看到这面的数字,看得到 ans(答案)就加一。

那接下来就要想该如何判断是否可以看到某一面。见下:

  1. 要是 x 轴坐标小于 0,则看到 YOZ 面上的数字。
  2. 要是 x 轴坐标大于 x 轴的边长,则看到 YOZ 的对面上的数字。

其余的以此类推,那这题就解出来了!

总结

  1. 搞清楚输入顺序。
  2. 搞清楚坐标轴。

代码

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int cnt[10],ans;//ans为答案(你看到的数字之和),cnt为每一面上的数。 
int x,y,z;//你所处的坐标。
int s1,s2,s3;//长,宽,高。 
int main(){
	scanf("%d %d %d %d %d %d",&x,&y,&z,&s1,&s2,&s3);
	for(int i=1; i<=6; i++) scanf("%d",&cnt[i]); 
	if(y<0) ans+=cnt[1];//看到了ZOX。
	if(y>s2) ans+=cnt[2];//看到了ZOX的对面。
	if(z<0) ans+=cnt[3];//看到了XOY。
	if(z>s3) ans+=cnt[4];//看到了XOY的对面。 
	if(x<0) ans+=cnt[5];//看到了YOZ。 
	if(x>s1) ans+=cnt[6];//看到了YOZ的对面。 
	printf("%d",ans);
	return 0;
}
posted @   naroto2022  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
花开如火,也如寂寞。