练习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;
}
凡岛公司福利 858人发布