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

小苹果(apple)

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

【题目描述】

小 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;
}


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

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

分享给朋友:

相关文章

【题解】计数2的N次方

【题目描述】任意给定一个正整数N(N≤100),计算2的n次方的值。【输入描述】输入一个正整数N。【输出描述】输出2的N次方的值。【样例输入】5【样例输出】32【参考答案】#include<io...

【题解】跳格子

【题目描述】地面上有一排长度为n的格子1-n,每个格子上都有一个数xi,开始时你在位置0,每次你可以向前跳1-2格,然后取走格子上的数,直到跳到位置n+1。取走的数的和就是你的得分,现在你想知道你可能...

【题解】赢得比赛需要的最少训练时长

【题目描述】你正在参加一场比赛,给你两个 正 整数 initialEnergy 和 initialExperience 分别表示你的初始精力...

【题解】加密(2019青岛市程序设计竞赛)

【问题描述】文件加密最简单的方法是把文件的原文中的每个字母用另一个字母来代替。假设原文中只包括26个英文字母(有大写和小写),没有其他符号,且长度不超过100,加密规则如下:原文abcdefghijk...

绝对素数

【题目描述】如果一个自然数是素数,且它的数字位置经过对换后仍为素数,则称为绝对素数,例如13。试求出所有二位绝对素数。【输入描述】无【输出描述】所有二位绝对素数(由小到大,一个数一行)。【输入样例】无...

【题解】后缀表达式的值

【题解】后缀表达式的值

【题目描述】从键盘读入一个后缀表达式(字符串),只含有0-9组成的运算数及加(+)、减(—)、乘(*)、除(/)四种运算符。每个运算数之间用一个空格隔开,不需要判断给你的表达式是否合法。以@作为结束标...