📑前言
本文主要是【C】——C算法的文章,如果有什么需要改进的地方还请大佬指出⛺️
🎬作者简介:大家好,我是听风与他🥇
☁️博客首页:阿里云主页听风与他
🌄每日一句:狠狠沉淀,顶峰相见
水手分椰子
第一题
- 6.5个水手在岛上发现了一堆椰子,先有第一个水手把椰子分成等量的5堆,还
剩了1个给了猴子,自己藏起一堆。然后第2个水手把剩下的4堆混合后重新分为等量的5堆,还剩了1个给了猴子,自己藏起一堆。以后第三、四个水手依次按此方法处理。最后,第5个水手把剩下的椰子分成等量的5堆后,同样剩下1个给了猴子。请用迭代法编程计算并输出原来这堆椰子至少有多少个?
#include<stdio.h>
int main(){
int i,m,j=0,k,count;
for(i=4;i<10000;i+=4){
count=0;
m=i;//将i的值赋给m
//分了五次椰子,所以循环5次
for(k=0;k<5;k++){
//因为四份肯定是均等的,在四份的基础上分成5个还多一个
j = m/4*5+1;// m/4 就是一份的值
m=j; //将j的值赋给m,进行累乘处理
if(j%4 == 0){
count++;
}else{
break;
}
}
//满足5次条件count=4
if(count==4){
printf("原有椰子数%d个",j);
break;
}
}
}
第二题
在上题中,如果第5水手分得255个椰子,用递归的方法计算原来这堆椰子的个数。
#include<stdio.h>
int yezi(int y)
{
int i;
for(i=1;i<=5;i++)
{
if((y-1)%5!=0)
return 0;
y=(y-1)/5*4;
}
return 1;
}
int main()
{
int i;
for(i=1;;i++)
{
if(yezi(i)==1)
{
printf("%d\n",i);
break;
}
}
}