版权声明:转载请注明出处 https://blog.csdn.net/nanhuaibeian/article/details/88870044
- 海滩上有一堆桃子,五只猴子来分。
第一只猴子把这堆桃子平均分为五份,多了一个,这只 猴子把多的一个扔入海中,拿走了一份。
第二只猴子把剩下的桃子又平均分成五份,又多了 一个,它同样把多的一个扔入海中,拿走了一份,
第三、第四、第五只猴子都是这样做的, 问海滩上原来最少有多少个桃子?
#include "stdio.h"
void main(){
int sum;
int i,j;
for(i=1;i>0;i++){
sum=i*5+1;
for(j=5;j>1;j--){
if(sum%4==0){
sum=sum/4*5+1;
}
else break;
}
if(j==1){
printf("%d-->%d",j,sum);
break;
}
}
}
- 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。
借助个数组轻松实现
# include "stdio.h"
#define len 5
void main(){
int a[len]={1,2,3,4,5};
int b[len];
int m=3,i,j;
for(i=0;i<len;i++){
j=(i+m)%len;
b[j]=a[i];
}
for(i=0;i<len;i++){
printf("%d ",b[i]);
}
}
- 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
# include "stdio.h"
#define len 13
typedef struct {
int data;
int next;
} circle;
void main() {
circle a[100];
int num=1,j=13,i;
for(i=1; i<=len; i++) {
a[i].data=i;
if(i==len) a[i].next=1;
else a[i].next=i+1;
}
while(num<len) {
i=0;
while(i<3) {
j=a[j].next;
if(a[j].data) {
i++;
}
}
printf("%d ",a[j].data);
a[j].data=0;
num++;
}
for(i=1; i<=len; i++) {
if(a[i].data) printf("\n%d",a[i].data);
}
}