字符串的题目

还是先分解题目

首先需要求数字的阶乘 用的函数就是 long long 阶乘 long long 类型是为了防止溢出

然后我们需要去掉末尾0 只需要判断能否被10 整除就可以了 然后循环 /= 10 就可以去掉末尾0

然后我们还需要求出位数 如果位数res <= k 那么我们直接全部输出就可以了

反之的话我们需要将数字转换成字符串 采用的sprint 函数

然后再for循环输出就好了

  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cstdio>
  4. #include <bits/stdc++.h>
  5. using namespace std;
  6. long long jiechen(int n)
  7. {
  8. long long sum = 1;
  9. for(int i = 1;i <= n;i++)
  10. {
  11. sum *= i;
  12. }
  13. return sum;
  14. }
  15. int main()
  16. {
  17. int n,k;
  18. cin>>n>>k;
  19. long long sum = jiechen(n);
  20. while(sum % 10 == 0)
  21. {
  22. sum /= 10;
  23. }
  24. long long sum1 = sum;
  25. int res = 0;
  26. while(sum1)
  27. {
  28. res++;
  29. sum1 /= 10;
  30. }
  31. if(res <= k)
  32. cout<<sum<<endl;
  33. else
  34. {
  35. char buff[1000];
  36. sprintf(buff,"%lld",sum);
  37. for(int i = strlen(buff) - k;i < strlen(buff);i++)
  38. cout<<buff[i];
  39. }
  40. return 0;
  41. }
点赞(0)
 

0 分

0 人评分

 

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论