【编程题】-C++实现:五只猴子分桃

来源:互联网 发布:右脑发育不全 知乎 编辑:程序博客网 时间:2024/04/30 13:35
////////////////////////////////////////////////////////////////////////////////////////////////////////  五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。//  于是,它吃掉了一个,拿走了一堆; 第二只猴子起来一看,只有四堆桃。//  于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;.....其他几只猴子也都是 这样分的。//  问:这堆桃至少有多少个? (3121)////  @编译环境:Dev c++ 5.11 //////////////////////////////////////////////////////////////////////////////////////////////////////#include <iostream>using namespace std;/* run this program using the console pauser or add your own getch, system("pause") or input loop *///  函数声明int CalcuCount( int n ); int main(int argc, char** argv) {    int sum = CalcuCount(5);    printf("%d \n" , sum);    return 0;}////////////////////////////////////////////////////////////////////////////////////////////////////////  函数实现 int CalcuCount( int n ){    if ( n <= 1 || n >= 9 )    {        return -1;                                                                                                                         }    int base = n + 1;    int sum = base;    int i = 0;    while ( 1 )    {        sum = base;        for ( i = 0; i < n ; ++i)        {            if ( (sum-1) % n == 0 && sum%(n-1) == 0 )            {                sum = (sum/(n-1))*n + 1;            }            else            {                break;            }        }        if (n-1 == i && sum > 0)        {            break;        }        base += n;    }    return sum;}
0 0
原创粉丝点击