本文主要是介绍【未完成】【PAT520 钻石争霸赛】7-7 阶乘的非零尾数 (20分),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
“求 N 阶乘末尾的第一个非零数字”是一道常见的企业笔试题。这里我们略微做个变化,求 N 阶乘末尾的第一个非零 K 位数,同时输出末尾有多少个零。
输入格式:
输入给出一个不超过 107 的正整数 N 和要求输出的位数 0<K<10。
输出格式:
在一行中输出 N 阶乘末尾的第一个非零 K 位数(注意前导零也要输出)、以及末尾 0 的个数,其间以 1 个空格分隔。
输入样例:
18 5
输出样例:
05728 3
#include <iostream>
#include <algorithm>
#include <stdlib.h>
#include <string.h>
using namespace std;
int countZero(int N){int ret=0;while(N>=5){N/=5;ret+=N;}return ret;}
int main()
{int n,k,m;char t;long long s=1,p=1;char str[100];cin>>n>>k;for(int i=1;i<=n;i++){s=s*i;while(s%10==0) s/=10;s=s%10000000000;}
// cout<<s<<endl;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<<" ";cout<<countZero(n);return 0;
}
这篇关于【未完成】【PAT520 钻石争霸赛】7-7 阶乘的非零尾数 (20分)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!