3 条题解
-
2
#include <bits/stdc++.h> using namespace std; int n, res1, res2; int main() { freopen("apple.in", "r", stdin); freopen("apple.out", "w", stdout); cin >> n; for (int i = 1; ; ++ i ) { if (n == 0) break; if (!res2 && n % 3 == 1) res2 = i; // 只有在第一次 n % 3 == 1 时记录答案 n -= ceil(n / 3.0); ++ res1; } cout << res1 << ' ' << res2 << '\n'; return 0; } -
1
画几个苹果找找规律,发现可以将每三个苹果看成时一组,每天每组苹果取一个。那么问题转化成了每天的苹果总数一共可以分为多少个组。同时要考虑最后一组可能小于三个苹果,但也要取走一个。
#include using namespace std; int main() { int n; cin>>n; int day=0;//用来保存第一次取到n的天数 int i=1;//记录取了的天数 bool m=true;//标记第一次取余为1的标记 while(n>0) { if(m) {//判断n号苹果是否能第一天取走; //(由于可能后面的天数中依然可能出现n%3==1 //的情况,所以打标记,只看第一次的情况。) if(n%3==1) { day=i; m=false; } } if(n>=3&&n%3>0) {//大于等于3个时,分情况讨论,n能否被3整除取走的苹果数量不同。 //@@@@@@@@ //@@@@@@ int x=n/3+1; n=n-x; } else if(n>=3&&n%3==0) { int x=n/3; n=n-x; } else if(n<3) {//小于3时,每次只能取走一个苹果 n--; } i++;//过渡到下一天 } cout<<i-1<<" "<<day<<endl; return 0;}
-
0
- 1
信息
- ID
- 91
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 145
- 已通过
- 47
- 上传者