新手求助
题目是这样的:Peter 有 n n根烟,他每吸完一根烟就把烟蒂保存起来,k(k>1)k(k>1)个烟蒂可以换一个新的烟,那么 Peter 最终能吸到多少根烟呢?吸烟有害健康。
#include<stdio.h>
int main()
{
int n,k,a,b,s;
scanf("%d%d",&n,&k);
s=n;
while(n>=k)
{
a=n/k;
b=n%k;
s=s+a;n=a+b;
}
printf("%d\n",s);
return 0;
}
我的代码是这样的,最后算出来的结果是错误的。哪里错了 本帖最后由 jackz007 于 2021-11-8 01:11 编辑
你根据什么说自己代码是错误的?
我写的代码和你的代码运算结果是一致的。
#include<stdio.h>
int main()
{
int k , m , n , s ;
scanf("%d%d", & n , & k);
for(s = m = n ; m > k ;) {
s += m / k ; // s : 烟卷总数
m = m / k + m % k ; // m : 烟头总数
}
printf("%d\n" , s) ;
}
编译、运行实况:
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
40 3
59
D:\00.Excise\C> jackz007 发表于 2021-11-8 01:08
你根据什么说自己代码是错误的?
我写的代码和你的代码运算结果是一致的。
感谢感谢,代码确实没错是我电脑的问题 #include <stdio.h>
int main (void){
int n, k, m = 0, n = 0; //m烟头数,n总数
printf("请输入n k的值\n");
scanf("%d %d", &n,&k);
while(n){ //一个一个数好像更直观
n--, m++, n++ ; //抽一根烟
if(m == k){ //烟把换烟卷
m = 0, n++;
}
}
if(m == k-1) //如果差一个烟头可以换,当场抽完给老板
n++; //逗着玩呢 :D
printf("\n%d\n", n);
return 0;
} C代码:#include <stdio.h>
int main()
{
int n, k, old;
scanf("%d %d", &n, &k);
for(int old = n; old >= k; old = (old%k) + (old/k)) n += old/k;
printf("%d", n);
return 0;
}C++ 代码:#include <bits/stdc++.h>
int main()
{
int n, k, old;
std::cin >> n >> k;
for(int old = n; old >= k; old = (old%k) + (old/k)) n += old/k;
std::cout << n << std::endl;
return 0;
}Python 代码:n, k = map(int, input().split())
res = n
while n >= k:
res += n//k
n = (n%k) + (n//k)
print(res)
页:
[1]