练习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; }