题目的意思是
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
",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
",sum);
}
return 0;
}
题目地址:【NYOJ】[94]cigarettes