练习16,G题,新函数定义

题目如下:

乎优塔病好了,他又开始研究定义一个新函数,该函数的声明形式为: long long fun(int n); ,其作用为:分解出n的每一位,并计算每一位的阶乘,然后将计算后的结果相加后返回,请编程实现(要求必须使用函数实现,否则不计入成绩)。

输入描述:

一个整数n(1≤n≤1000000)。

输出描述:

一个整数,计算后的结果。

此题目如果要以函数声明形式,那么这个题需要分为两个函数,一个是计算阶乘的函数,另外一个是计算加和的函数,此题数据可能会太大,所以我们要使用longlong类型来定义函数,计算阶乘的函数代码如下:

long long fun1(int n)
{
    long long int b = 1;
    for(int i = 1;i <= n;i++)
    {
        b *= i;
    }
    return b;
}

计算加和的函数代码如下:

long long fun2(int n)
{
    long long c = 0;
    while(n>0)
    {
        int d = n%10;
        c += fun1(d);
        n /= 10;
    }
    return c;

}

这里用到了提取位数,并调用上一个函数计算阶乘并加和。

总代码如下:

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
long long fun1(int n)
{
    long long int b = 1;
    for(int i = 1;i <= n;i++)
    {
        b *= i;
    }
    return b;
}
long long fun2(int n)
{
    long long c = 0;
    while(n>0)
    {
        int d = n%10;
        c += fun1(d);
        n /= 10;
    }
    return c;

}
int main()
{
    int n;
    cin >> n;
    long long c;
    c = fun2(n);
    cout << c << endl;
    return 0;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务