求阶梯数函数
在你面前有一条长长的阶梯,若是你每次跨两阶,那么最后剩余一阶,若是你每次跨三阶,那么最后剩两阶,若是你每次跨5阶最后剩4阶,若是你每次跨6阶,最后剩余5阶,只有当你每次跨7阶,才正好到头,这个楼梯到底有多少阶,spa
分析,由于每次跨7阶,才正好到头,说明楼梯的阶数是7的倍数code
int main(){ ladder = 7; while(1){ if((ladder%2==1)&&(ladder%3==2)&&(ladder%5==4)&&(ladder%6==5)&&(ladder%7==0)){ printf("最少须要%d",ladder); break; } ladder+=7; } }
五家共井递归
如今有五家共用一口井,甲、乙、丙、丁、戌五家各有一条绳子汲水(下面用文字表示每一家的绳子):甲×2+乙=井深,乙×3+丙=井深,丙×4+丁=井深,丁×5+戌=井深,戌×6+甲=井深,求甲、乙、丙、丁、戌各家绳子的长度和井深。it
分析 设井深为len,甲的绳长 len1,乙的绳长 len2,丙的绳长 len3,丁的绳长 len4,戌的绳长len5while
由条件可得 len1*2+len2 = lenco
len2*3+len3 = lenbackground
len3*4+len4 = lenreturn
len4*5+len5 = lenprintf
len5*6+len1 = len
依次把len1,len2,len3,len4,len5表明的绳长求出
len1 = len2+len3/2
len2 = len3+len4/3
len3 =len4+len5/4
len4 = len5+len1/5
int main() { int len1, len2, len3, len4, len5, len, flag; flag = 1; len5 = 0; while (flag) { len5 += 4; len1 = 0; while (flag) { len1 += 5; len4 = len5 + len1 / 5; len3 = len4 + len5 / 4; if (len3 % 2) { continue; } if (len4 % 3) { continue; } len2 = len3 + len4 / 3; if (len2 + len3 / 2 < len1) break; if (len2 + len3 / 2 == len1) flag = 0; } } len2 = 2 * len1 + len2; printf("长度为\n"); printf("甲长度为%d\n",len1); printf("乙长度为%d\n",len2); printf("丙长度为%d\n",len3); printf("丁长度为%d\n",len4); printf("戊长度为%d\n",len5); system("PAUSE"); return 0; }
鸡兔同笼
“今有鸡兔同笼,上有三十五头,下有94足,问鸡兔各几何”
分析:鸡有两只脚,兔子有四只脚,所以可得二元一次方程组
设鸡为X,兔子为Y
X + Y = 35
2X + 4Y = 94
int main(){ int head,foot,chook,rabbit; printf("请输入鸡和兔子的头和脚数\n"); scanf("%d%d",&head,&foot); for(chook =0;chook<=head;chook++){ rabbit = head-chook; if(chook*2+rabbit*4==foot){ printf("鸡的数量:%d,兔子的数量%d",chook,rabbit); } } }
猴子吃桃问题
一只猴子摘了一堆桃子它天天吃了其中的一半而后在多吃了一个,直到第十天,他发现只有一个桃子了,问第一天摘了多少个桃子
分析:a10 = 1
a9=(a10+1)*2
a8 =(a9 +1 )*2
........
咱们使用递归函数来计算这种推算的问题
int peach(int n) { if (n == 1) return 1; else return (peach(n - 1) + 1) * 2; //前一天比后一天多一倍+1 } int main() { int days, sum; printf("请输入天数\n"); scanf("%d", &days); sum = peach(days); printf("%d", sum); system("PAUSE"); return 0; }