概述
自言自语。。。我怎么想怎么觉得编程这东西需要点想象力,就是也不能是天马行空的想象,是在有一定依据的基础上,进行的猜测、判断,能理解么。思路这种东西,有点能想但不易说的感觉。
Factorial
小昊昊学了离散数学之后,他被同学商商的一个问题难住了,商商说:“昊昊,你能告诉我N的阶乘末尾有几个零嘛?”
小昊昊一脸茫然,编程牛逼的你可以告诉他答案嘛?
Input
首先输入一个T代表T组数据,之后T行每行一个整数N,代表询问N的阶乘
Output
输出N的阶乘末尾零的个数
Sample Input
6
3
60
100
1024
23456
8735373
Sample Output
0
14
24
253
5861
2183837
做poj中第二次看到这个题了,第一次见是c语言的期末考试了,直到现在才明白。思路如下
读了题之后,肯定要先想到这个数的范围铁定会爆表,这个数一大了不仅仅会爆表还会超时,那么这样的题一定有数学规律是可循的。就问怎么出现0呢?只要出现5就会出现0,所以只要这个数的分解有5,那就能出现一个0,如5、10、25、30、这样的数,如果以此从5遍历过去,依然会超时。那么跟这数有什么关系呢,就有关系了,//这个可能通过数学能解释的过来 反正我是不行了
日常流程上代码
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
using namespace std;
int main()
{
int T;
cin>>T;
while(T--){
int a;
cin>>a;
int sum=0;
while(a!=0){
sum+=a/5;
a=a/5;
}
cout<<sum<<endl;
}
return 0;
}
最后
以上就是细心发箍为你收集整理的poj1401的思路建立的全部内容,希望文章能够帮你解决poj1401的思路建立所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复