输出满足条件n=a!+b!+c!的所有三位数

/*
*Corpyright (c)2013,烟台大学计算机学院
*All right reseved.
*作者:高古尊
*完成日期:2013年11月9日
*版本号:v1.0
*输入描述:2 5
*问题描述:请输出满足条件n=a!+b!+c!的所有三位数n,
其中,a、b、c分别是n的百、十、个位数。
要求用自定义函数实现求阶乘。
*程序输出:142
*问题分析:
*算法设计:
*/
#include <iostream>
#include <cmath>
using namespace std;
long fac(int );
int main()
{

    int  n;
    cout<<"满足条件n=a!+b!+c!三位数有:";
    for(n=100; n<1000; n++)
    {
        if(n==fac(n))
            cout<<n<<' ';
    }
    cout<<endl;

    return 0;
}


long fac(int n)
{
    int z,sum,i,y=0;
    do
    {
        sum=1;
        z=n%10;
        for(i=0; i<z;)
        {
            i++ ;
            sum=sum*i;
        }

        y=y+sum;
        n=(n-z)/10;
    }
    while(n!=0);
    return y;

}





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: \u8fd9\u4e00\u9898\u7684\u89c4\u5219\u53ef\u4ee5\u901a\u8fc7\u9636\u4e58\u6765\u6c42n=a!+b!+c! \u6240\u6709\u4e09\u4f4d\u6570n\u3002 \u9636\u4e58\u7684\u6b63\u786e\u5b9a\u4e49\u662f\uff1a\u5f53\u4e00\u4e2a\u6570\u76ee\u7684\u6240\u6709\u6570\u7684\u5e73\u65b9\u4ee3\u8868\u4e2d\u7684\u6570\u5b57\u5e76\u5e73\u65b9\u5c0f\u4e8e\u5b9a\u4e49\u7684\u53c2\u6570n\u65f6\uff0c\u8fd4\u56de\u8fd9\u4e2a\u6570\u7684\u9636\u4e58\u3002 \u6709\u4e00\u4e2a\u901a\u7528\u7684\u9636\u4e58\u51fd\u6570\u53ef\u4ee5\u7528\u6765\u6c42n=a!+b!+c! \u6240\u6709\u4e09\u4f4d\u6570n\u3002 \u4e00\u4e2a\u53ef\u80fd\u7684\u89c4\u5219\u662f\uff1a $$ f(n) = \sum\limits_{i=0}^{9} \sum\limits_{j=0}^{9} \sum\limits_{k=0}^{9} [i!+j!+k! = n] $$ \u4e0a\u9762\u7684\u51fd\u6570\u4f1a\u901a\u8fc7\u5b9a\u4e49\u7684\u9636\u4e58\u89e3\u51b3\u4e0a\u9762\u7684\u65b9\u7a0b\u6765\u6c42n\u3002 \u4e00\u4e2a\u6c42\u89e3\u7684\u65b9\u6cd5\u662f\u901a\u8fc7\u7ed3\u5408\u5f0f\u6765\u6c42\u3002 $$ f(n) = \sum\limits_{i=0}^{9} \sum\limits_{j=0}^{9} \sum\limits_{k=0}^{9} [i! \leq n]\times [j! \leq n - i!]\times [k! \leq n - i! - j!] $$ \u8fd9\u4e2a\u51fd\u6570\u4f1a\u5c06\u6240\u6709\u5e73\u65b9\u5c0f\u4e8e\u7b49\u4e8e n \7684 i,j,k \4e09\u4f4d\u6570\u5b9a\u4e49\u7684\u9636\u4e58\u6765\u8ba1\u7b97\u3002 ### 回答2: 题目要求输出满足条件n=a! b! c!的所有三位数n,其中a、b、c分别是n的百、十、个位数,并且要求用自定义函数实现求阶乘。 首先,我们需要定义一个计算阶乘的函数。 ```python def factorial(num): result = 1 for i in range(1, num+1): result *= i return result ``` 接下来,我们需要遍历所有三位数,判断是否满足条件。在遍历过程中,我们通过整除和取余操作获取百位、十位和个位上的数。 ```python for n in range(100, 1000): a = n // 100 b = (n // 10) % 10 c = n % 10 if n == factorial(a) * factorial(b) * factorial(c): print(n) ``` 以上代码即可实现求解满足条件的所有三位数n。注意,题目中要求使用自定义函数来实现求阶乘,因此我们在代码中调用了自定义的factorial函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值