鱼C论坛

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

新手求助

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

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

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

x
题目是这样的:Peter 有 n n根烟,他每吸完一根烟就把烟蒂保存起来,k(k>1)k(k>1)个烟蒂可以换一个新的烟,那么 Peter 最终能吸到多少根烟呢?

吸烟有害健康。
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int n,k,a,b,s;
  5. scanf("%d%d",&n,&k);
  6. s=n;
  7. while(n>=k)
  8.   {
  9.   a=n/k;
  10.   b=n%k;
  11.   s=s+a;n=a+b;
  12.   }
  13. printf("%d\n",s);
  14. return 0;
  15. }  
复制代码


我的代码是这样的,最后算出来的结果是错误的。哪里错了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-11-8 01:08:41 | 显示全部楼层
本帖最后由 jackz007 于 2021-11-8 01:11 编辑

        你根据什么说自己代码是错误的?
        我写的代码和你的代码运算结果是一致的。
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int k , m , n , s         ;
  5.         scanf("%d%d", & n , & k)  ;
  6.         for(s = m = n ; m > k ;) {
  7.                 s += m / k        ; // s : 烟卷总数
  8.                 m = m / k + m % k ; // m : 烟头总数
  9.         }
  10.         printf("%d\n" , s)        ;
  11. }
复制代码

        编译、运行实况:
  1. D:\00.Excise\C>g++ -o x x.c

  2. D:\00.Excise\C>x
  3. 40 3
  4. 59

  5. D:\00.Excise\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

感谢感谢,代码确实没错是我电脑的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-8 17:22:05 | 显示全部楼层
  1. #include <stdio.h>
  2. int main (void){
  3.         int n, k, m = 0, n = 0; //m烟头数,n总数
  4.         printf("请输入n k的值\n");
  5.         scanf("%d %d", &n,&k);
  6.        
  7.         while(n){                                //一个一个数好像更直观
  8.                 n--, m++, n++ ;                //抽一根烟
  9.                 if(m == k){                        //烟把换烟卷
  10.                         m = 0, n++;
  11.                 }
  12.         }
  13.         if(m == k-1)                        //如果差一个烟头可以换,当场抽完给老板
  14.                 n++;                                 //逗着玩呢 :D
  15.                  
  16.         printf("\n%d\n", n);
  17.        
  18.         return 0;
  19. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-8 20:23:16 | 显示全部楼层
C代码:
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int n, k, old;
  5.     scanf("%d %d", &n, &k);
  6.     for(int old = n; old >= k; old = (old%k) + (old/k)) n += old/k;
  7.     printf("%d", n);
  8.     return 0;
  9. }
复制代码
C++ 代码:
  1. #include <bits/stdc++.h>

  2. int main()
  3. {
  4.     int n, k, old;
  5.     std::cin >> n >> k;
  6.     for(int old = n; old >= k; old = (old%k) + (old/k)) n += old/k;
  7.     std::cout << n << std::endl;
  8.     return 0;
  9. }
复制代码
Python 代码:
  1. n, k = map(int, input().split())
  2. res = n
  3. while n >= k:
  4.     res += n//k
  5.     n = (n%k) + (n//k)
  6. print(res)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 22:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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