站外题求助
  • 板块学术版
  • 楼主NaturalSelection
  • 当前回复11
  • 已保存回复11
  • 发布时间2023/8/18 21:28
  • 上次更新2023/11/3 02:47:59
查看原帖
站外题求助
737409
NaturalSelection楼主2023/8/18 21:28

题目内容:四体世界包含四颗恒星和一颗行星,所以有以下几种情况:

  1. 当四颗恒星都远离行星时,行星将处于严寒状态

  2. 当三颗恒星远离行星而剩下一颗靠近行星时,行星将处于恒温状态

  3. 当两颗恒星远离行星而剩下两颗靠近行星时,行星将处于炎热状态

  4. 当一颗恒星远离行星而剩下三颗靠近行星时,行星将处于炼狱状态

  5. 当四颗恒星都靠近行星时,行星将处于毁灭状态 对于以下三种情况,行星上的四体文明将灭绝: 一、 严寒状态或炎热状态持续5年

二、 炼狱状态持续3年

三、 毁灭状态持续1年

四体世界还拥有以下规律:

①四体世界的行星不会移动

②恒星只有“靠近行星”和“远离行星”两种状态

③第x颗恒星每保持现有状态a[x]年就会改变一次自己的状态,即从“靠近行星”变为“远离行星”或从“远离行星”变为“靠近行星”

④四体文明毁灭后会立刻进入下一个文明,即文明编号从i变为(i+1)

现在给你第一年时各颗恒星的状态和a数组,问你n年后行星的状态和文明编号

Input Format

输入数据共三行:

第一行仅一个数n

第二行共4个数,分别表示a[1]、a[2]、a[3]和a[4]

第三行共4个数,分别表示四颗恒星的状态(1表示“靠近恒星”,0表示“远离恒星”)

以上各数含义均为题目描述所示

Output Format

输出内容包括两行

第一行为n年后行星的状态:

(若为严寒状态,输出 "cold";若为恒温状态,输出 "warm";若为炎热状态,输出 "hot";若为炼狱状态,输出 "very hot";若为毁灭状态,输出 "die")

第二行一个数,表示n年后四体世界的文明编号

本蒟蒻代码:

#include<iostream>
using namespace std;
int main(){
	int n,a[5],b[5],period=1,cold=0,hot=0,very_hot=0;
	cin>>n;
	for(int i=0;i<4;i++){
		cin>>a[i];
	}
	for(int i=0;i<4;i++){
		cin>>b[i];
	}
	for(int i=1;i<=n;i++){
		int star0=0,star1=0;	
		for(int j=0;j<4;j++){
			if(b[j]==0)star0++;
		}
		for(int j=0;j<4;j++){
			if(i%a[j]==0)b[j]=1-b[j];
		}
		for(int j=0;j<4;j++){
			if(b[j]==0)star1++;
		}
		if(star1==4&&star0!=4){
			cold++;
			hot=0;
			very_hot=0;
		}else if(star1==2&&star0!=2){
		hot++;
		cold=0;very_hot=0;
			} else if(star1==1&&star0!=0){
			very_hot++;
			hot=0;
			cold=0;
			}
			if(star1==4&&star0==4){
			cold++;
		}else if(star1==2&&star0==2){
		hot++;
			} else if(star1==1&&star0==0){
			very_hot++;
			}
		if(cold==5||hot==5||very_hot==3||star1==0)period++;
	}
	int star=0;
		for(int i=0;i<4;i++){
			if(b[i]==0)star++;
		}
		if(star==4)cout<<"cold"<<endl;
		else if(star==2)cout<<"hot"<<endl;
			else if(star==1)cout<<"very hot"<<endl;
				else if(star==0)cout<<"die"<<endl;
					else if(star==3)cout<<"warm"<<endl;
		
		cout<<period;
} 

求大佬指教

2023/8/18 21:28
加载中...