【每日一题]2023百度之星-糖果促销 保姆级教程

今天做一道简单的数论题,灰常简单

目录

题目:糖果促销

  思路:


题目:糖果促销

小度最喜欢吃糖啦!!!
这天商店糖果促销,可给小度高兴坏了。

促销规则:一颗糖果有一张糖纸,p张糖纸可以换取一颗糖果。换出来糖果的包装纸当然也能再换糖果。

小度想吃 k颗糖果,他需要买多少颗糖?

【每日一题]2023百度之星-糖果促销 保姆级教程_第1张图片

【每日一题]2023百度之星-糖果促销 保姆级教程_第2张图片

思路:

注意到“至少 ”,细品!就是说最后一次换糖果时恰好没有多余的糖皮,即最终手里有一定且仅有一张糖皮(如果手里有大于两张糖皮的话,那就上次兑换就有多余的糖皮,也就是多买的糖)
好了,我们来分析:一共吃了k个糖,那么有k-1个糖皮被换成了糖,那么需要买的糖就是k-(k-1)/p;
最后呢!这个题其实还可以二分来做,也就是带入答案,然后比较吃到的总糖果超过了还是不够!!!我就不写了哈!

 

#include    //糖果促销:p个糖果可以换1个糖,想吃k个糖至少要买多少个糖 (1<=t<=1e6, 1<=p<=1e9, 0<=k<=1e9)
using namespace std;
int t,p,k;
int main(){
	cin>>t;
	while(t--){
		cin>>p>>k;
		if(k==0) cout<<0<<'\n';//注意题上的数据范围
		else{
			k-=(k-1)/p;//一个式子就行
			cout<

你可能感兴趣的:(百度)