原题链接:https://ac.nowcoder.com/acm/contest/18839/1044

题目描述

珂朵莉想每天都给威廉送礼物,于是她准备了n个自己的本子

她想送最多的天数,使得每天至少送一个本子,但是相邻两天送的本子个数不能相同

珂朵莉最多送几天礼物呢

输入描述:

第一行一个整数n

输出描述:

第一行输出一个整数,表示答案

示例1

输入

4

输出

3

说明

第一天送1个本子
第二天送2个本子
第三天送1个本子


小学题,找规律
本子总数给定,显然珂朵莉要将能送的天数最大化,每天就得送的少。
珂朵莉真爱威廉怎么这么抠抠搜搜的图片说明
相邻两天赠送数量不同,第一天送1个本子,第二天送2个本子,第三天送1个本子...以此类推即最优解。
找规律,显然每两天3本一循环,将总数n/(整除)3再*2得到总天数
考虑到n不一定为3的倍数,将n%3得到余下不在循环内的本子数,其结果可能是0,1,2

若n%3=0,则没有余下的本子,不需要额外的天数
若n%3=1 或 2则需要额外的一天

为了避免冗杂的选择语句,这里可以用雨巨没有讲过的条件运算符"?"
(条件式1)?(表达式1):(表达式2) //判断如果条件式1为真(非0),则执行表达式1,否则执行表达式2

在总天数后面+(n%3)? 1 : 0 ; 即可

简单糙下代码,AC图片说明

这是我的代码

#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
    int n,ans;
    cin >> n;
    ans=2*(n/3)+(n%3 ? 1: 0);
    cout<<ans<<endl;
    return 0;
}

现在写题解真是越来越水了