【NYOJ】[1094]cigarettes

文章字数:230

问题描述

问题分析

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

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#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记录当前有的烟蒂

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#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;
}

题目地址:cigarettes

该内容采用 CC BY-NC-SA 4.0 许可协议。

如果对您有帮助或存在意见建议,欢迎在下方评论交流。

加载中...