2 条题解

  • 1
    @ 2023-10-30 17:56:50

    画几个苹果找找规律,发现可以将每三个苹果看成时一组,每天每组苹果取一个。那么问题转化成了每天的苹果总数一共可以分为多少个组。同时要考虑最后一组可能小于三个苹果,但也要取走一个。

    #include
    using namespace std;
    int main() {
    int n;
    cin>>n;
    int day=0;//用来保存第一次取到n的天数
    int i=1;//记录取了的天数
    bool m=true;//标记第一次取余为1的标记
    while(n>0) {
     if(m) {//判断n号苹果是否能第一天取走;
    //(由于可能后面的天数中依然可能出现n%3==1
    //的情况,所以打标记,只看第一次的情况。)
      if(n%3==1) {
       day=i;
       m=false;
      }
     }
    if(n>=3&&n%3>0) {//大于等于3个时,分情况讨论,n能否被3整除取走的苹果数量不同。
    //@@@@@@@@
    //@@@@@@
    int x=n/3+1;
    n=n-x;
    } else if(n>=3&&n%3==0) {
    int x=n/3;
    n=n-x;
    } else if(n<3) {//小于3时,每次只能取走一个苹果
    n--;
    }
    i++;//过渡到下一天
    }
    cout<<i-1<<" "<<day<<endl;
    return 0;
    

    }

    • @ 2023-11-12 8:33:35

      温老师,请使用MD格式代码

  • 0
    @ 2023-11-12 8:35:19
    • 1

    信息

    ID
    91
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    6
    已通过
    5
    上传者