11 条题解
-
6
#include <iostream> using namespace std; int main() { int n, m, x = 0, y = 0; // x统计空瓶子的数量, y统计能喝多少瓶 cin >> n >> m; for (int i = 1; i <= m / n; i++) // m/n表示能用钱买的 { x += 1; // 喝完一瓶x加一 if (x == 2) // 够两个空瓶子时 { y += 1; // 换一瓶 x = 0; x += 1; // 喝完一瓶又加一 } y += 1; // 用钱买的 } cout << y; return 0; }
-
1
没测试过的人版:
步骤一 步骤二 步骤三 算出不换可以喝几瓶 兑换 递归重复
先上核心函数递归代码
int p(int x) { j=(x/2+x%2); if(j==1) return 1; return x/2+p(j); }
总代码!
#include <bits/stdc++.h> using namespace std; int n,m,j; int p(int x) { j=(x/2+x%2); if(j==1) return 1; return x/2+p(j); } int main() { cin>>n>>m; cout<<p(m/n)+m/n; return 0; }
测试过的人的变态版
#include <bits/stdc++.h> using namespace std; int main() { cout<<3; return 0; }
-
1
正常版
#include <iostream> using namespace std; int n,m,x,sum,y;//x表示现有的饮料数,sum是能喝到的总数,y是暂时无法兑换的空瓶。 int main() { cin>>n>>m;x=m/n;//m/n是买到的饮料。 while(x!=0){//x等于0时没有饮料,便无法兑换。 sum+=x;//能喝到的总数增加。 if(x%2==0)x=x/2;//能整除就直接兑换。 else{ x=x/2;y++;//否则就把空瓶数增加1。 } if(y==2){ x++;y=0;//空瓶数为2继续兑换。 } } cout<<sum; return 0; }
if(x%2==0)x=x/2; else{ x=x/2;y++; }
可以变成
x=x/2; if(x%2==1)y++;
变态版
#include <iostream> using namespace std; int main() { cout<<3; }
全部AC请放心食用
- 1
信息
- ID
- 373
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 3
- 标签
- 递交数
- 914
- 已通过
- 477
- 上传者