关于##include#的问题,如何解决?

题目是这样的:n的阶乘定义为n!=123……n 如3!=6 n!通常最后会有很多0,如5!=120 最后有一个0,现在统计n!去除末尾的0后,最后k位是多少?
范围:1< =n< =1400000 1< =k< =10
我总是过不去。
以下是代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    long long n,k,m;
    char t;
    long long s=1,p=1;
    string str[100];
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        s=s*i;
        while(s%10==0) s/=10;
        s=s%10000000000;
    }
    for(int i=0;i<k;i++){
        if(s){
            str[i]=s%10+48;
            s/=10;
        }else str[i]='0';
    }
    for(int i=k-1;i>=0;i--) cout<<str[i];
    cout<<endl;
    return 0;             
}

请帮忙看下

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7805001
  • 你也可以参考下这篇文章:输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2
  • 除此之外, 这篇博客: 数据结构:递归算法中的 2、求一个数的阶乘:n! 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    1

    n! = n*(n-1)*(n-2)*......1

      规定:

      ①、0!=1

      ②、1!=1

      ③、负数没有阶乘

      上面的表达式我们先用for循环改写:

    /**
     * 0!=1  1!=1
     * 负数没有阶乘,如果输入负数返回-1
     * @param n
     * @return
     */
    public static int getFactorialFor(int n){
        int temp = 1;
        if(n >=0){
            for(int i = 1 ; i <= n ; i++){
                temp = temp*i;
            }
        }else{
            return -1;
        }
        return temp;
    }

    如果求阶乘的表达式是这样的呢?

    n! = n*(n-1)!

    我们用递归来改写:

    /**
     * 0!=1  1!=1
     * 负数没有阶乘,如果输入负数返回-1
     * @param n
     * @return
     */
    public static int getFactorial(int n){
        if(n >= 0){
            if(n==0){
                System.out.println(n+"!=1");
                return 1;
            }else{
                System.out.println(n);
                int temp = n*getFactorial(n-1);
                System.out.println(n+"!="+temp);
                return temp;
            }
        }
        return -1;
    }

     

    我们调用该方法getFactorial(4);即求4!打印如下:

      

      这段递归程序的边界条件就是n==0时,返回1,具体调用过程如下:

      


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

你看看是不是数据范围的原因,因为阶乘是一个特别特别大的数字,若是30的阶乘,long long 是存不下的,会溢出