第十一周项目4-特殊三位数

输出满足条件n=a!+b!+c!的所有三位数n,其中,a、b、c分别是n的百、十、个位数,并且用自定义函数实现求阶乘。

/*
 *Copyright (c) 2014,烟台大学计算机学院
 *All gight reserved.
 *文件名称:temp.cpp
 *作者:邵帅
 *完成时间:2014年11月5日
 *版本号:v1.0
*/
#include <iostream>
using namespace std;
int main()
{
    long fac(int n);
    int n, a, b, c, sum;
    cout << "满足条件n=a!+b!+c!的所有三位数:";
    for (n = 100; n <= 999; n++)
    {
        a = n / 100;
        b = (n / 10) % 10;
        c = n % 10;
        sum = fac(a) + fac(b) + fac(c);
        if (sum == n)
            cout << n;
    }
    return 0;
}

long fac(int n)
{
    int i, y = 1;
    for (i = 1; i <= n; i++)
        y = y * i;
    return y;
}
运行结果:



思路:要想求出符合题意的数字,要先构造一个阶乘的函数fac(),利用sum的变量, sum = fac(a) + fac(b) + fac(c),这样,利用穷举法列出符合题意的数字,本程序最关键的是如何求出百、十、个位数的数字:百位直接利用int整形的特殊性求出,十位利用/10再取/10的余数,个位直接取/10的余数。


@ Mayuko

转载于:https://www.cnblogs.com/mayuko/p/4567636.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值