题目描述
小 Y 的桌子上放着 nnn 个苹果从左到右排成一列,编号为从 111 到 nnn。
小苞是小 Y 的好朋友,每天她都会从中拿走一些苹果。
每天在拿的时候,小苞都是从左侧第 111 个苹果开始、每隔 222 个苹果拿走 111 个苹果。随后小苞会将剩下的苹果按原先的顺序重新排成一列。
小苞想知道,多少天能拿完所有的苹果,而编号为 nnn 的苹果是在第几天被拿走的?
输入格式
输入的第一行包含一个正整数 nnn,表示苹果的总数。
输出格式
输出一行包含两个正整数,两个整数之间由一个空格隔开,分别表示小苞拿走所有苹果所需的天数以及拿走编号为 nnn 的苹果是在第几天。
样例 #1
样例输入 #1
8
样例输出 #1
5 5
提示
【样例 111 解释】
小苞的桌上一共放了 888 个苹果。
小苞第一天拿走了编号为 111、444、777 的苹果。
小苞第二天拿走了编号为 222、666 的苹果。
小苞第三天拿走了编号为 333 的苹果。
小苞第四天拿走了编号为 555 的苹果。
小苞第五天拿走了编号为 888 的苹果。
【样例 222】
见选手目录下的 apple/apple2.in 与 apple/apple2.ans。
【数据范围】
对于所有测试数据有:1≤n≤1091\leq n\leq 10^91≤n≤109。
| 测试点 | n≤n\leqn≤ | 特殊性质 |
|---|---|---|
| 1∼21\sim 21∼2 | 101010 | 无 |
| 3∼53\sim 53∼5 | 10310^3103 | 无 |
| 6∼76\sim 76∼7 | 10610^6106 | 有 |
| 8∼98\sim 98∼9 | 10610^6106 | 无 |
| 101010 | 10910^9109 | 无 |
特殊性质:小苞第一天就取走编号为 nnn 的苹果。
题解
#include "bits/stdc++.h"
using namespace std;
const int N = 1e6+7;
int n,day=0,day1=0;
int main() {
cin>>n;
bool x = false;
if(n%3==1){
day1 = 1;
x = true; //第一次拿到最后一个苹果
}
int n1=0; //分成几组
while(n!=0){ //还有苹果
if(n%3==1&&!x){
day1 = day+1; //因为day一开始是0,所以要+1
x = true; //第一次拿到最后一个苹果
}
n1 = n/3;
if(n%3!=0) n1++;//若剩下的不能被分为3个一组,组数(拿走苹果数+1)
n-=n1; //拿走苹果
day++;
}
cout<<day<<" "<<day1<<endl;
return 0;
}
7025

被折叠的 条评论
为什么被折叠?



