在最后一次CSP-J ,也是把双一等奖拿下了(大家不要说我蒟蒻嘤嘤)。下面来讲一下我在考场上的做题思路和题解吧。
第一题 小苹果
题意
小 Y 的桌子上放着 n 个苹果从左到右排成一列,编号为从1到 n。
小苞是小 Y 的好朋友,每天她都会从中拿走一些苹果。
每天在拿的时候,小苞都是从左侧第1个苹果开始、每隔 2 个苹果拿走 1 个苹果。
随后小苞会将剩下的苹果按原先的顺序重新排成一列。
小苞想知道,多少天能拿完所有的苹果,而编号为 n 的苹果是在第几天被拿走的?
思路
这不纯纯模拟吗 , 每天只能拿去n/3个 , 因为最后一个苹果只能在第一次n%3 == 1时被取走。
所以这题就结束了(100分轻松到手)
AC代码如下(原考场代码)
#include <bits/stdc++.h>
# define ull unsigned long long
using namespace std;
const int N = 1000000005;
int n , k , cnt;
int main()
{
scanf("%d" , &n);
int now = 1;//计算n%3余数如!= 0还能多拿走一个
int day = 1;//拿走全部苹果一共需要多少天
int j;//当天能拿走多少苹果
while(n > 0)
{
now = n % 3;
j = n / 3;
if(now != 0) j++;
if(k == 0 && n