鱼C论坛

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

[已解决]这题怎么做啊

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

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

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

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

        }
        if (5==j)
        {
                break;
        }
        i++;
}
return 0;
}
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 | 显示全部楼层    本楼为最佳答案   
int main( )
{
int i=6,j=0,n=0,m=0;
while (true)
{
        n=i;
        for ( j = 0; j < 5; j++)
        {
                if (1!=n%5)break;
                m=(n-1)/5;
                n--;
                n-=m;

        }
        if (5==j)
        {
                break;
        }
        i++;
}
return 0;
}
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 编辑
#include <stdio.h>
int main()
{
int i,j,k;
        for(i=1;;i++)//设最后分到手每个人 i 只
        {        
                k=i*5+1; //倒推第一次
                for(j=1;j<5;j++) //倒推分四次 j表示倒推次数
                {  
                        if(k%4==0)
                                k=k/4*5+1;
                        else
                                break;
                }
                if(k%5==1 && j==5 )
                {
                        printf("野人一个打了%d只鸟",k);
                        break;
                }
        }
        return 0;
}
无标题.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

}
}
刚看到敲得,不知道是否正确,欢迎指正
想知道小甲鱼最近在做啥?请访问 -> 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 编辑

#include <stdio.h>
int main()
{
int i,j,k;
        for(i=1;;i++)//设最后分到手每个人 i 只
        {        
                k=i*5+1; //倒推第一次
                for(j=1;j<5;j++) //倒推分四次 j表示倒推次数
                {  
                        if(k%4==0)
                                k=k/4*5+1;
                        else
                                break;
                }
                if(k%5==1 && j==5 )
                {
                        printf("野人一个打了%d只鸟",k);
                        break;
                }
        }
        return 0;
}
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 | 显示全部楼层
for i in range(1,1000): #第五个人拿走鸟的数量区间
    s = i * 5 + 1
    n = 1
    while n < 4:
        t = s / 4
        s = t*5 + 1
        n += 1
        if s%4 != 0:
            break
    if s%4 == 0 and n == 4:
        t = s / 4
        s = t*5 + 1
        print(s)
3121.0
6246.0
9371.0

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 20:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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