原题链接:阶乘末尾的K位
字符串的题目
还是先分解题目
首先需要求数字的阶乘 用的函数就是 long long 阶乘 long long 类型是为了防止溢出
然后我们需要去掉末尾0 只需要判断能否被10 整除就可以了 然后循环 /= 10 就可以去掉末尾0
然后我们还需要求出位数 如果位数res <= k 那么我们直接全部输出就可以了
反之的话我们需要将数字转换成字符串 采用的sprint 函数
然后再for循环输出就好了
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <bits/stdc++.h>
using namespace std;
long long jiechen(int n)
{
long long sum = 1;
for(int i = 1;i <= n;i++)
{
sum *= i;
}
return sum;
}
int main()
{
int n,k;
cin>>n>>k;
long long sum = jiechen(n);
while(sum % 10 == 0)
{
sum /= 10;
}
long long sum1 = sum;
int res = 0;
while(sum1)
{
res++;
sum1 /= 10;
}
if(res <= k)
cout<<sum<<endl;
else
{
char buff[1000];
sprintf(buff,"%lld",sum);
for(int i = strlen(buff) - k;i < strlen(buff);i++)
cout<<buff[i];
}
return 0;
}
0 分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复