鱼C论坛

 找回密码
 立即注册
查看: 1852|回复: 4

新手求助

[复制链接]
发表于 2021-11-7 23:50:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目是这样的: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;
 }  

我的代码是这样的,最后算出来的结果是错误的。哪里错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-8 01:08:41 | 显示全部楼层
本帖最后由 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>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-8 12:17:22 | 显示全部楼层
jackz007 发表于 2021-11-8 01:08
你根据什么说自己代码是错误的?
        我写的代码和你的代码运算结果是一致的。

感谢感谢,代码确实没错是我电脑的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-8 17:22:05 | 显示全部楼层
#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; 
} 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-8 20:23:16 | 显示全部楼层
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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 23:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表