GitBook

这里写图片描述 这里写图片描述

题目的意思是 Tom现有n根烟 每k个烟蒂能卷一个新烟 求Tom最多能抽多少烟

代码思路是通过模拟抽烟的过程 循环吸烟的过程 跟踪 烟蒂 新烟 的变化 直到没有新烟了 则循环终止

#include<stdio.h>
int main() {
	int T;
	scanf("%d",&T);
	while(T--) {
		int n,k;
		scanf("%d %d",&n,&k);
		int sum=0;
		int m=0;
		while(n) {
			sum+=n;
			m+=n;
			n=0;
			n+=m/k;
			m-=m/k*k;
		}
		printf("%d\n",sum);
	}
	return 0;
}

标程的循环更为简便 是把n/k当做现有未抽的新烟 用n记录当前有的烟蒂

#include "stdio.h"
#include<fstream>
int main() {
	//freopen("d:\\1.txt","r",stdin);
	//freopen("d:\\2.txt","w",stdout);
	int m;
	scanf("%d",&m);
	while(m--) {
		int n,k,sum;
		scanf("%d%d",&n,&k);
		sum=n;
		while(n/k) {
			sum+=n/k;
			n=n/k+n%k;
		}
		printf("%d\n",sum);
	}
	return 0;
}

题目地址:【NYOJ】[94]cigarettes