2 条题解
-
-3
CSPJ2023A题解
思路
本题根据模拟,可以发现每次取走的苹果编号取余3都为1()。根据此性质,每次取走的苹果数量就是要求现在的苹果总数里,有几个的数。很容易的,我们能够想到,可以用一个while循环来多每次的苹果数操作,当苹果数为0时结束。在循环中第一次发现时,记录下来作取n号苹果是第几天。注意不要重复存储。在这里,有一点细节需要注意,就是求总量中含几个,满足
AC代码
#include <bits/stdc++.h> //By 洋葱头 using namespace std; int n, day, dayn, flag = 1; //day表示取完要几天,dayn表示取n号在哪一天 int main() { //freopen("apple.in", "r", stdin); //freopen("apple.out", "w", stdout); //输入输出重定向 scanf("%d",&n); while(n) { day = day + 1;//操作次数+1 if(n % 3 == 1 && flag) //取到n号并且是第一次 dayn = day, flag = 0; int m = (n + 2) / 3; //本次操作可以取走几个 n = n - m; //取走苹果 } cout << day << " " << dayn; }
- 1
信息
- ID
- 1
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 7
- 标签
- 递交数
- 735
- 已通过
- 155
- 上传者