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

小苹果(apple)

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

【题目描述】

小 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×n的黑白图像(1表示黑色,0表示白色),任务是统计其中黑色连通块的个数。如果两个黑格子有公共边或者公共顶点,就说它们属于同一个联通块。如下图所示的图形有3个联通块。【输入描述】...

    【题解】游览动物园

    【题目描述】动物园有很多游览区,小红已经在动物园的一个游览区游览,突然接到电话,要半个小时内到动物园外面跟一个朋友见面。半个小时小红只够游览完当前区域之后,游览一个最近的景区。已知从一个游览区域只能沿...

    【题解】切比雪夫距离

    【题目描述】小C有一个平面!它发现了平面上的两个点,请你求出求它们之间的切比雪夫距离。切比雪夫距离定义为x与y方向坐标差的绝对值较大值。【输入描述】四个整数,a,b,c,d。坐标为(a,b)与(c,d...

    【题解】BFS、DFS——走迷宫问题

    【题目描述】给定一个 n×m的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0 表示可以走的路,1 表示不可通过的墙壁。最初,有一个人位于左上角 (1,...

    【题解】二分法查找左边界

    参考代码:# include <bits/stdc++.h> using namespace std; int a[100005];&...

    【题解】发工资

    【题目描述】财务处的小李最近就在考虑一个问题:如果每个员工的工资额都知道,最少需要准备多少张人民币,才能在给每位员工发工资的时候都不用员工找零呢?这里假设程序猿的工资都是正整数,单位元,人民币一共有1...