题目:

一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积。阶乘的增长速度非常快,例如,

13!就已经比较大了,已经无法存放在一个整型变量中;而35!就更大了,它已经无法存放在一个浮点型变量中。因此,当n比较大时,去计算n!是非常困难的。幸运的是,在本题中,我们的任务不是去计算n!,而是去计算n!最右边的那个非0的数字是多少。例如,5!=12345=120,因此5!最右边的那个非0的数字是2。再如,7!=5040,因此7!最右边的那个非0的数字是4。再如,15!= 1307674368000,因此15!最右边的那个非0的数字是8。请编写一个程序,输入一个整数n(0<n<=100)
然后输出n!最右边的那个非0的数字是多少。

输入:
  7
输出:
  4


  • 分析思路:

单纯的算阶乘就比较简单了,而题目需要的却是结果最右边的非0数字,

while(a[i]%10==0){a[i]=a[i]/10;}

stringstream用法

当我们需要按预定的格式将程序中的数据保存在一个string 中的时候,可以先创建一个stringstream 对象,并通过运算符 ”<<“ 将数据传递给 stringstream 对象。(这与通过”<<“ 使用cout 对象的方法相同。)接着,我们可以通过调用stringstream 类的函数str() 将对象所包含的内容赋给一个string对象。在下面的程序中,我们先将数据传递给一个stringstream 对象,然后通过该 stringstream 对象将数值赋给一个string 对象。

stringstream sstr;
//--------int转string-----------int a=100;stringstream s;string str;s << n;s >> str;
cout<<str<<endl;
//--------string转char[]--------
s.clear();//如果你想通过使用同一stringstream对象实现多种类型的转换,请注意在每一次转换之后都必须调用clear()成员函数。
string name = "lina";
char cname[200];
s<<name;
s>>cname;
cout<<cname;
  • 方法1代码:
#include <iostream>
#include <algorithm>
using namespace std;
int a[110];
void f(){a[0]=a[1]=1; //1!=1,0!=1 for(int i=2;i<=100;i++){a[i]=i*a[i-1]; //阶乘核心算法while(a[i]%10==0)a[i]=a[i]/10; a[i]%=10000;}}int main(){int n;f();while(cin>>n){cout<<a[n]%10<<endl;  //保证输出最右边不为0的1位}return 0;}

  • 方法2代码:
#include<iostream>
#include<sstream>
using namespace std;int f(int n)
{stringstream s;string str;s << n;s >> str;if(str.size()<=2)return n;int i;for(i =str.size()-1;i>=0;i--){if(str[i]-'0'!=0)break;}//cout << "str " << str << endl;if(i==0)str = str.substr(i,1);elsestr = str.substr(i-1,2);s.clear();s << str;s >> n;return n;
}
int main()
{int n,a = 1;cin >> n;for(int i = 2;i <= n;i++){a*=i;a= f(a);cout<< i << " a  "<< a<< " a*(i+1)"<< a*(i+1) << endl;}while(a%10==0)a/=10;cout << a%10 << endl;return 0;
}

试题7 算法训练 P0505(最右边的那个非0的数字)相关推荐

  1. 蓝桥练习-算法训练 P0505

    一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积.阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中:而35!就更大了,它已经无法存放在一个浮点型变量中.因此, ...

  2. 【c语言】蓝桥杯算法训练 P0505

    问题描述 一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积.阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中:而35!就更大了,它已经无法存放在一个浮点型变量 ...

  3. 蓝桥 算法训练 P0505

    一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积.阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中:而35!就更大了,它已经无法存放在一个浮点型变量中.因此, ...

  4. 阶乘最右边的那个非0数与阶乘之和

    一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积.阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量 中:而35!就更大了,它已经无法存放在一个浮点型变量中.因此 ...

  5. 试题 算法训练 P0505 思维

    代码: #include<bits/stdc++.h> using namespace std;int main() {int n;scanf("%d",&n) ...

  6. 试题5 算法训练 猴子吃包子

    问题描述 从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同:肉包每秒钟吃x个:韭菜包每秒钟吃y个:没有馅的包子每秒钟吃z个:现在有x1个肉包,y1个韭菜包,z1个没有 ...

  7. java蓝桥杯的题_Java蓝桥杯试题集——算法训练ALGO-116——最大的算式

    题目要求 解题思路 动态规划,今天才弄明白QAQ,借鉴了这位大佬的博客,曹磊的博客 写的很好!但是我觉得我的循环方式更容易理解嘿嘿嘿~ 首先建立如下图的数组,行数代表前几位数,列数代表有几个乘号.将第 ...

  8. 试题8 算法训练 P0103(从键盘输入一个大写字母,要求改用小写字母输出。)

    题目: 从键盘输入一个大写字母,要求改用小写字母输出. 输入 A 输出 a 分析思路: 主要考虑ASII码值的相互转化 a: 对应ASII值为:97 A: 对应ASII值为:65 大小写之间相差32 ...

  9. 试题6 算法训练 数据交换(指针)

    问题描述 编写一个程序,输入两个整数,分别存放在变量x和y当中,然后使用自己定义的函数swap来交换这两个变量的值. 输入格式:输入只有一行,包括两个整数. 输出格式:输出只有一行,也是两个整数,即交 ...

最新文章

  1. Android项目中出现的Plugin with id ‘kotlin-android‘ not found解决方法
  2. 基坑计算理论m法弹性支点法_基坑支护结构设计应注意的一些问题
  3. WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping
  4. python使用openpyxl操作excel总结
  5. C语言反序输出英文句子,C++实现英文句子中的单词逆序输出的方法
  6. 小学数学动画 android,小学数学动画教学下载-小学数学动画 安卓版v5.0-pc6手机下载...
  7. 韩顺平php视频笔记70 面向对象编程的三大特征1 抽象 封装
  8. java避免活锁.死锁的解决,java并发编程(九): 避免活跃性危险
  9. 【OpenGL】glFinish()和glFlush()函数详解
  10. C#入门详解(10)
  11. 荒野行动为什么不能获取服务器信息,荒野行动获取服务器信息一直不动 服务器信息0解决方法...
  12. SVN客户端和服务端的安装教程
  13. XTU1340Wave
  14. 产品必备-用户故事模板
  15. GSM UMTS E-UTRAN
  16. 在windows中使用bat脚本获取linux服务器文件
  17. JavaMail QQ邮箱发送内容+图片
  18. 径向基网络(RBF network)之BP监督训练
  19. [4G5G专题-30]:物理层-基带无线资源、物理层帧结构、无线资源调度
  20. 华为软件开发云释放莫比嗨客开发潜能

热门文章

  1. 零基础学python实战-零基础学习python_类和对象(36-40课)
  2. 自学python后自己接单-分享一下我的Python自学历程,分享下我自己学习方法
  3. 专科python应届生工资多少-阿里巴巴达摩院招聘应届生
  4. python在财务中的应用-Python用于财务工作培训
  5. python必备基础代码-Python初学者必会的3款代码编辑器
  6. 语音识别揭秘:你的手机究竟有多理解你?
  7. 第H题 输入N求N的阶乘的10进制表示的长度
  8. js 异步执行_js执行机制:同步与异步(宏任务与微任务)
  9. dump文件_零基础编程——Python文件、JSON数据存储
  10. Linux服务器的eth,linux做服务器安装两块网卡问题????