分桃网(分桃网)


写在最前: 本本章中的题目;在不不同的编译器中可能会有提示错误,呵呵,小小的动动手改下变量的定义就可以运行了……………….. 由于能力不足..有题目未解决的…或者有错误的我会…认真听取大家的..意见的…. ……..有一两个….偷了下懒哦……… 提供原题目还有本人自己的解答的源代码。感谢大家的。。。。建议……………问题一: 狼追兔子

分桃网

题目描述

一只兔子躲进了n个环形分布的洞的某一个中。狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中?

输入

有多组测试数据,读取到文件结尾符为止。每组测试数据输入n(2≤n≤100),即洞穴个数。输入到文件结尾符为止。

分桃网

输出

兔子可能藏匿的洞。如果不止一个,按从小到大的顺序输出。如果不存在,输出空行。

样例输入

10

15

样例输出

分桃网

2 4 7 9

2 4 5 7 8 9 11 12 14

提示

用一个数组a[10],对应的元素a[0],a[1],a[2]……a[9]对应表示10个洞,初值均置1。通过一个循环用“穷举法”找兔子,第n次查找对应第(n-1)个洞,如果在第(n-1)个洞中没有找到兔子,因此将数组元素a[(n-1)]置0值。循环完成后,检查a数组各元素(各个洞)的值,若其值仍为1,则兔子可能藏身该洞中。

程序代码:

#include 
#include 
int ok[110];
int main(){       
int n,s,i,find;       
while(scanf("%d",&n)!=EOF)      
{          
 memset(ok,0,sizeof(ok));          
for(i=1;i<=200;i++)               
if(!ok[find=(i*(i+1)/2)%n])                  
if(find==0)                       
ok[n]=1;                  
else                      
ok[find]=1;          
for(s=0,i=1;i<=n;i++)              
s+=ok[i];           
for(i=1,find=0;i<=n;i++)              
if(!ok[i])              
{                  
 if(find!=(n-s-1))                 
 {                      
 printf("%d ",i);find++; 
 }                  
else                      
printf("%d",i);             
 }         
 printf("n");      
}       
return 0;  
 }

分桃网

问题二:五猴分桃

分桃网

题目描述

5只猴子一起摘了1堆桃子。因为太累了,它们商量决定,先睡一觉再分。过了不知多久,1只猴子来了。它见别的猴子没来,便将这1堆桃子平均分成5份,结果多了1个,就将多的这个吃了,拿走其中的1堆。又过了不知多久,第2只猴子来了。它不知道有1个同伴已经来过,还以为自己是第1个到的呢。于是将地上的桃子堆起来,平均分成5份,发现也多了1个,同样吃了这1个,拿走其中的1堆。第3只、第4只、第5只猴子都是这样……问这5只猴子至少摘了多少个桃子?第5个猴子走后还剩下多少个桃子?

输入

分桃网

输出

输出5只猴子至少摘了多少个桃子,第5个猴子走后还剩下多少个桃子。中间用空格隔开。

样例输入 样例输出

3121 1020

提示

思路一:“分”——假设至少摘了first_num个桃子,则令first_num=6,7,8,9,10,……这样不断的试,如果那个数能按规则(first_num=(first_num-1)/5*4)被5只猴子顺利的吃1个并分5组,则为所求。思路二:“凑”——假设最后剩下last_num个桃子,则令last_num=4,5,6,7,8,9,10,……这样不断的试,如果那个数能按规则(last_num%4==0则last_num = last_num / 4 * 5 + 1)凑5次,则为所求。

分桃网

程序代码:

#include  
#include  
int main()  {  
    int first,i,t;  
    for(i=1;i<5000;i+=5)      {  
        first=i;  
        for(t=1;t<=5;t++)          {  
            if(first%5==1)              {  
                first=(first-1)/5*4;                  if(t==5)  
                    printf("%d %dn",i,first);
}              else 
                break;          }             }  
//  printf("time:%.2lfn",(double)clock() / CLOCKS_PER_SEC);     
 return 0;  
}

问题三:打渔晒网

分桃网

题目描述

中国有名俗语叫“三天打鱼两天晒网”。小强从2000年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是在“打鱼”,还是在“晒网”?

输入

本文收集自互联网,如果发现有涉嫌侵权或违法违规的内容,请联系6532516@qq.com以便进行及时清除。
分享到