题目内容:四体世界包含四颗恒星和一颗行星,所以有以下几种情况:
当四颗恒星都远离行星时,行星将处于严寒状态
当三颗恒星远离行星而剩下一颗靠近行星时,行星将处于恒温状态
当两颗恒星远离行星而剩下两颗靠近行星时,行星将处于炎热状态
当一颗恒星远离行星而剩下三颗靠近行星时,行星将处于炼狱状态
当四颗恒星都靠近行星时,行星将处于毁灭状态 对于以下三种情况,行星上的四体文明将灭绝: 一、 严寒状态或炎热状态持续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;
}
求大佬指教