|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目要求算出结果末尾0的个数(因为它也知道数值很大),下面是我的代码,运行时间超时 。
举个例子:999999998的阶乘末尾有多少个0 答案是249999989
- #include<stdio.h>
- int main() {
- long long int a, sum = 1;
- scanf("%lld", &a);
- while (a > 0) { // 阶乘
- sum *= a;
- a--;
- }
- int i;
- for (i = 0;; i++) { // 计算末尾0个数
- if (sum % 10 == 0) { // 检查末尾是否存在0
- sum /= 5;
- }
- else
- break;
- }
- printf("%d", i);
- return 0;
- }
复制代码
本帖最后由 jhq999 于 2021-10-10 20:34 编辑
- int i=0,len5=0,len2=0,tmp=0,num=999999998;
- i=2;
- while(i<=num)
- {
- if(0==i%2)
- {
- tmp=i;
- while(tmp>0&&!(tmp%2))
- {
- len2++;
- tmp/=2;
- }
- }
- i+=2;
- }
- i=5;
- while(i<=num)
- {
-
- if(0==i%5)
- {
- tmp=i;
- while(tmp>0&&!(tmp%5))
- {
- len5++;
- tmp/=5;
- }
- }
- i+=5;
- }
- printf("%d",len2<len5?len2:len5);
- return 0;
复制代码
|
|