求改错,悬关
  • 板块学术版
  • 楼主midsummer_zyl
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/6 16:01
  • 上次更新2023/11/2 15:14:17
查看原帖
求改错,悬关
1025321
midsummer_zyl楼主2023/10/6 16:01

题目描述

牛牛因为数学太差被老师赶出教室了,虽然老师侵犯了牛牛的公平教育权,但是牛牛在教室 外的小卖部大彻大悟,提升了自己的数学水平。

故事是这样的:学校里的小卖部里有一个活动:只要有三个饮料瓶就可以换一瓶新的饮料。

现在牛牛从路边捡到了 10 个饮料瓶,于是牛牛开始兑换饮料。他的兑换操作如下:先用 9个饮料瓶换 3 瓶饮料,喝完。然后手里有 4 个饮料瓶,再拿出 3 个换 1 瓶饮料,这时手里有 2 个饮料瓶。牛牛再问老板借 1 瓶饮料,喝完之后又多了 1 个饮料瓶,然后拿 3 个饮料瓶换一瓶饮料还给老板。

有借有还,再借不难。在这个过程中,牛牛总共喝了 5 瓶饮料。

牛牛现在有 ? 个饮料瓶,小卖部的活动是每 ? 个饮料瓶能换一瓶饮料,牛牛最多能喝几瓶饮料?

牛牛已经大彻大悟,现在他拿这道题来考你,他希望你和他一样大彻大悟。

输入格式
输入包含两个正整数 n, k;

n <= 1e100005, k <= min(1e9, n);

输出格式
输出一行一个整数表示答案。

样例 1 输入
10 3
样例 1 输出
5
样例 2 输入
10 4
样例 2 输出
3

3030 分代码如下:

#include <bits/stdc++.h>
using namespace std;
const int N = 510;
int a[N], s[N];
int main() {
	string s1;
	long long b;
	cin >> s1 >> b;
	b -= 1;
	int len1 = s1.size();
	for (int i = 0; i < len1; i++)
		a[i + 1] = s1[i] - '0';
	int r = 0;
	for (int i = 1; i <= len1; i++) {
		s[i] = (r * 10 + a[i]) / b;
		r = (r * 10 + a[i]) % b;
	}
	int len3 = 1;
	while(s[len3] == 0 && len3 < len1) len3++;
	for (int i = len3; i <= len1; i++)
		cout << s[i];
	return 0;
}
2023/10/6 16:01
加载中...