当前位置:首页 > 题解目录 > 正文内容

小苹果(apple)

亿万年的星光1年前 (2024-10-01)题解目录1803

【题目描述】

小 Y 的桌子上放着n个苹果从左到右排成一列,编号为从1到n。

小苞是小 Y 的好朋友,每天她都会从中拿走一些苹果。

每天在拿的时候,小苞都是从左侧第1个苹果开始、每隔2个苹果拿走2个苹果。随后小苞会将剩下的苹果按原先的顺序重新排成一列。

小苞想知道,多少天能拿完所有的苹果,而编号为n的苹果是在第几天被拿走的?

【输入描述】

输入的第一行包含一个正整数n,表示苹果的总数。

【输出描述】

输出一行包含两个正整数,两个整数之间由一个空格隔开,分别表示小苞拿走所有苹果所需的天数以及拿走编号为n的苹果是在第几天。

【样例输入】

8

【样例输出】

5 5

【提示】

说明/提示

【样例 1 解释】

小苞的桌上一共放了8个苹果。

小苞第一天拿走了编号为1、4、7的苹果。

小苞第二天拿走了编号为2、6的苹果。

小苞第三天拿走了编号为3的苹果。

小苞第四天拿走了编号为5的苹果。

小苞第五天拿走了编号为8的苹果。

【数据范围】

1n109 

测试点n≤特殊性质
1∼210
3∼5103
6∼7106
8∼9106
10109


特殊性质:小苞第一天就取走编号为n的苹果。

【题目分析】

  1. 题目有点“约瑟夫环”的感觉。

  2. 简单找找取模的规律。




【参考代码】

#include <bits/stdc++.h>
using namespace std;
int n, ans, num;
//n是苹果数量,ans记录天数,num记录第一次n%3==1的时间。
int main() {
  cin >> n;
  while (n) {
    ans++;
    //每过一天ans++。
    if (n % 3 == 1 && !num) {
      num = ans;
    }
    //如果n%3==1并且是第一次出现,记录num。
    n = n - (n + 2) / 3;
    //n每次减少1/3 n个苹果。
  }
  cout << ans << ' ' << num;
  //输出天数和拿走第n个苹果的时间。
  return 0;
}


    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    分享给朋友:

    相关文章

    【题解】链表操作

    【题目描述】给定一个N个数的数组,M次操作,每次操作为下列操作之一。求最后的数组。操作1:在第X个数之后插入一个数Y。操作2:删除第X个数。操作3:对区间[X,Y]进行排序。操作4:对区间[X,Y]进...

    【题解】营救巨轮

    【题目描述】一艘远洋巨轮在大海中遇到故障,船长库克立刻发出了求救信号。距离最近的辽宁号收到了讯息,时间就是生命,必须尽快赶到那里。通过侦测,辽宁号获取了一张海洋图。这张图将海洋部分分化成n*n个比较小...

    【题解】团伙

    【题目描述】在某城市里住着n个人,任何两个认识的人不是朋友就是敌人,而且满足:1、我朋友的朋友是我的朋友;2、我敌人的敌人是我的朋友;所有是朋友的人组成一个团伙。告诉你关于这n个人的m条信息,即某两个...

    【题解】放苹果(2)

    【题目描述】把M个同样的苹果放在N个同样的盘子里,不允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。【输入】第一行是测试数据的数目t(0≤t≤20)。以...

    【题解】车厢调度

    【题解】车厢调度

    【题目描述】有一个火车站,铁路如图所示,每辆火车从A驶入,再从B方向驶出,同时它的车厢可以重新组合。假设从A方向驶来的火车有n节(n<=1000)。分别按照顺序编号为1,2,3,...n。假定在...

    生日

    【题目描述】cjf君想调查学校OI组每个同学的生日,并按照从大到小的顺序排序。但cjf君最近作业很多,没有时间,所以请你帮她排序。【输入描述】有2行,第1行为OI组总人数n;第2行至第n+1行分别是每...