欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Digit Sum of N!(牛客网,递归)

程序员文章站 2022-05-14 18:34:15
...

Digit Sum of N!(牛客网,递归)

今天的题比较简单,
但是还有另一种方法我推不出来

(请各位路过的大佬知道的可以私信我,谢谢)
题目:
我的代码很简单,就是列举了许多数据,然后得出一个比较简单的规律

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int main(int argc, char** argv) {
 int n;
 while(scanf("%d",&n)!=EOF){
  if(n==1){
   cout<<1<<endl;
  }
  else if(n==2){
   cout<<2<<endl;
  }
  else if(n==3||n==4){
   cout<<6<<endl;
  }
  else if(n==5){
   cout<<3<<endl;
  }
  else{
   cout<<9<<endl;
  }
 }
 return 0;
}

参考别人的代码,能逆推出来结果,但看不懂他写代码的思路
代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100
int F(int n)
{
    int sum=n,i,k,com;
    char name[1000];
    for(i=n-1;i>1;i--)
    {
        com=0;
        sprintf(name,"%d",sum);
        //printf("---%s\n",name);
        for(k=0;k<strlen(name);k++)
        {
            com+=i*(name[k]-'0');
            //printf("+++%c\n",name[k]);
        }
        sum=com;  
    }
    printf("%d\n",sum);
    return sum;
}
int main()
{
    int n;
    while(scanf("%d",&n))
    {
    printf("%d\n",(F(n)/10)+(F(n)%10));
    }
    return 0;
}
相关标签: 日常练习