鱼C论坛

 找回密码
 立即注册
查看: 2588|回复: 30

[已解决]这题怎么做啊

[复制链接]
发表于 2021-9-13 21:17:26 | 显示全部楼层 |阅读模式

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

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

x
这题怎么做啊,算法的不会啊
最佳答案
2021-9-14 07:46:53
  1. int main( )
  2. {
  3. int i=6,j=0,n=0,m=0;
  4. while (true)
  5. {
  6.         n=i;
  7.         for ( j = 0; j < 5; j++)
  8.         {
  9.                 if (1!=n%5)break;
  10.                 m=(n-1)/5;
  11.                 n--;
  12.                 n-=m;

  13.         }
  14.         if (5==j)
  15.         {
  16.                 break;
  17.         }
  18.         i++;
  19. }
  20. return 0;
  21. }
复制代码

3121不知道对不对
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-13 21:48:33 | 显示全部楼层

回帖奖励 +20 鱼币

这个数学问题呀
我有一个想法
因为是求至少是多少只,不妨第五个野人分的鸟的数量是6只
因为 这六只是第4个野人分五份扔一只后拿走其中一份剩下的,那么第四人分的鸟的数量应该是 5 除以 五分之四 加一
后面的以此类推
数学较差,有误请指教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-13 22:01:40 | 显示全部楼层

回帖奖励 +20 鱼币

从后面倒数回来就好 ,假设最后的为N,那么第五个人就是5*(N+1),第四个就是5*(5*(N+1)+1),第三个5*(5*(5*(N+1)+1)+1),第二个5*(5*(5*(5*(N+1)+1)+1)+1),第一个5*(5*(5*(5*(5*(N+1)+1)+1)+1)+1),再把N最小代入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-13 22:49:15 | 显示全部楼层

回帖奖励 +20 鱼币

大马强 发表于 2021-9-13 21:48
这个数学问题呀
我有一个想法
因为是求至少是多少只,不妨第五个野人分的鸟的数量是6只

都是整只的,没有小数
第五人最少有16只,也就是第四人分了5组(先不管他扔掉的那只,这个是在确定第五人的数量),拿走了一组后剩下的4组,共16只
第五人共16只,分成5组,每组3只余的1就是被扔掉的那只
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-14 00:06:17 | 显示全部楼层

回帖奖励 +20 鱼币

如图,注意注释,用逆向思维反过来写
O1DLHDZNM~V{GGK4H5(EE_X.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-14 00:35:57 | 显示全部楼层

回帖奖励 +20 鱼币

本帖最后由 傻眼貓咪 于 2021-9-14 10:36 编辑
一共 296 隻鳥

野人醒來順序
鳥的數量
丟掉1隻,再平分5人,扣除野人拿走自己那份
第一個野人醒來
296
(59+59+59+59+59-1)/5
第二個野人醒來
236
(47+47+47+47+47-1)/5
第三個野人醒來
141
(28+28+28+28+28-1)/5
第四個野人醒來
56
(11+11+11+11+11-1)/5
第五個野人醒來
11
(2+2+2+2+2-1)/5


第一個野人拿走 59 隻鳥
第二個野人拿走 47 隻鳥
第三個野人拿走 28 隻鳥
第四個野人拿走 11 隻鳥
第五個野人拿走 2 隻鳥

好像也不對

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
嘉岳呀 + 1 + 1 你是香港的吗?&amp;amp;#127469;&amp;amp;#127472;

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-14 07:41:59 | 显示全部楼层

回帖奖励 +20 鱼币

傻眼貓咪 发表于 2021-9-14 00:35
本帖最后由 傻眼貓咪 于 2021-9-14 00:38 编辑
一共 296 隻鳥

236-48=188
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-14 07:46:53 | 显示全部楼层    本楼为最佳答案   
  1. int main( )
  2. {
  3. int i=6,j=0,n=0,m=0;
  4. while (true)
  5. {
  6.         n=i;
  7.         for ( j = 0; j < 5; j++)
  8.         {
  9.                 if (1!=n%5)break;
  10.                 m=(n-1)/5;
  11.                 n--;
  12.                 n-=m;

  13.         }
  14.         if (5==j)
  15.         {
  16.                 break;
  17.         }
  18.         i++;
  19. }
  20. return 0;
  21. }
复制代码

3121不知道对不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-14 08:15:22 | 显示全部楼层

回帖奖励 +20 鱼币

傻眼貓咪 发表于 2021-9-14 00:35
本帖最后由 傻眼貓咪 于 2021-9-14 00:38 编辑
一共 296 隻鳥

你确定是这样的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-14 09:02:12 | 显示全部楼层

回帖奖励 +20 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-14 09:06:16 | 显示全部楼层

回帖奖励 +20 鱼币

学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-14 09:10:48 | 显示全部楼层

回帖奖励 +20 鱼币

你这题和菜鸟教程的题非常像,建议你去看一下。
这个属于数学问题。只要把数学问题搞定了,程序自然就出来了。
如果只是给 你程序,数学问题没解决,下次你碰到这样的问题,你还是不会。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-14 09:39:27 | 显示全部楼层
本帖最后由 jhanker 于 2021-9-14 09:46 编辑

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i,j,k;
  5.         for(i=1;;i++)//设最后分到手每个人 i 只
  6.         {       
  7.                 k=i*5+1; //倒推第一次
  8.                 for(j=1;j<5;j++) //倒推分四次 j表示倒推次数
  9.                 {  
  10.                         if(k%4==0)
  11.                                 k=k/4*5+1;
  12.                         else
  13.                                 break;
  14.                 }
  15.                 if(k%5==1 && j==5 )
  16.                 {
  17.                         printf("野人一个打了%d只鸟",k);
  18.                         break;
  19.                 }
  20.         }
  21.         return 0;
  22. }
复制代码

无标题.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-14 09:43:34 | 显示全部楼层
本帖最后由 村里小黑 于 2021-9-14 09:50 编辑
  1. int main()
  2. {
  3. unsigned int i=0,j=0,k=0,n=0,m=0;
  4. for(i=0;i<20000;i++)
  5. {
  6.    for(j=1;j<6;j++)
  7.   {
  8.    n=i-j*(k+1);
  9.    k=n-k/5;
  10.    m=k%5;
  11.       if(m!=0)
  12.       {
  13.          j=7
  14.       }
  15.       if(j==5&&m==0)
  16.      {
  17.           printf("%d",i);
  18.           i=20001;
  19.       }
  20.   }

  21. }
  22. }
复制代码

刚看到敲得,不知道是否正确,欢迎指正
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-14 09:45:36 | 显示全部楼层
对不对没算过,你可以自己算算看。这是反推的算法,前面楼上的正推的算法你也可以试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-14 10:21:39 | 显示全部楼层
3121.0
6246.0
9371.0
12496.0
15621.0
18746.0
21871.0
24996.0
28121.0
31246.0
34371.0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-14 10:35:27 | 显示全部楼层

好像也不對
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-14 10:36:00 | 显示全部楼层

好像也不對
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-14 10:51:31 | 显示全部楼层
本帖最后由 jhq999 于 2021-9-14 11:00 编辑


  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i,j,k;
  5.         for(i=1;;i++)//设最后分到手每个人 i 只
  6.         {        
  7.                 k=i*5+1; //倒推第一次
  8.                 for(j=1;j<5;j++) //倒推分四次 j表示倒推次数
  9.                 {  
  10.                         if(k%4==0)
  11.                                 k=k/4*5+1;
  12.                         else
  13.                                 break;
  14.                 }
  15.                 if(k%5==1 && j==5 )
  16.                 {
  17.                         printf("野人一个打了%d只鸟",k);
  18.                         break;
  19.                 }
  20.         }
  21.         return 0;
  22. }
复制代码

k%4==0的由来:
f(k)-1-(f(k)-1)/5=f(k-1)
=>4f(k)-4=5*f(k-1)
=>f(k)=(5*f(k-1))/4+1
=》f(k)要想得到整数解f(k-1)必须被4整除
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-14 11:04:54 | 显示全部楼层
  1. for i in range(1,1000): #第五个人拿走鸟的数量区间
  2.     s = i * 5 + 1
  3.     n = 1
  4.     while n < 4:
  5.         t = s / 4
  6.         s = t*5 + 1
  7.         n += 1
  8.         if s%4 != 0:
  9.             break
  10.     if s%4 == 0 and n == 4:
  11.         t = s / 4
  12.         s = t*5 + 1
  13.         print(s)
复制代码

  1. 3121.0
  2. 6246.0
  3. 9371.0
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 12:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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