南邮 OJ 1170 C阶乘问题

来源:互联网 发布:unity3d 材质球下载 编辑:程序博客网 时间:2024/06/10 04:48

C阶乘问题

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 619            测试通过 : 39 

比赛描述

    也许你早就知道阶乘的含义,N阶乘是由1N相乘而产生,如:

12! = 1×2×3×4×5×6×7×8×9×10×11×12 = 479,001,600

12的阶乘最右边的非零位为6

    写一个程序,计算N(1<=N<=50,000,000)阶乘的最右边的非零位的值。注意:10,000,000!有2499999个零。




输入

仅一行包含一个正整数N。

 


输出

单独一行包含一个整数表示最右边的非零位的值。


样例输入

12

样例输出

6

提示

 

题目来源

NUAA_缪荣



#include<iostream>using namespace std;int GetRightestNoZeroDigitA(int n){int m = 1,    c = 0,   i;int cr[] = { 1, 3, 4, 2 };int rr[] = { 1, 6, 2, 8, 4 };while( n > 1){  if ( 2 == (i = n % 5) )  m <<= 1;  else if ( 4 == i )  m <<= 2;  c += n /= 5;}if ( c & 1 )  return rr[ ( cr[ c % 4 ] * 4 * m ) % 5 ];return rr[ ( cr[ c % 4 ] * m ) % 5 ];    }int main(){int N;cin>>N;cout<<GetRightestNoZeroDigitA(N)<<endl;}/*Time Limit Exceed at Test 7#include<stdio.h>#include<stdlib.h>int main(){int n,i,o,k=0,l=0,m=1,r,f;scanf("%d",&n);if(n==1){printf("1\n");exit(0);}  for(i=1;i<=n;i++){o=i;l=0;while(o%2==0){o=o/2;k=k+1;   }while(o%5==0){o=o/5;l=l+1;}k=k%4-l%4; if(k<0)k=k+4;m=(m*o)%10;    }switch(k){case 0:r=6;break; case 1:r=2;break;case 2:r=4;break;case 3:r=8;break;}f=(m*r)%10;printf("%d\n",f);}*//*WA4# include<iostream>using namespace std;int main(){    int nNum,sum,i,loop; while(cin>>nNum) {  sum=1;  for(i=nNum;i>=1;i--)  {    sum*=i;    loop=sum/10;    while(loop*10==sum)//消0    {        sum/=10;        loop=sum/10;    }    if(sum>=100000)//保存末尾5位数字即可      sum%=100000;  }  cout<<sum%10<<endl; } return 0;}*//*WA3#include <stdio.h>int main(){int num, p=1;scanf("%d",&num);while(num){p*=num;while(p%10==0)p/=10;p%=10;num--;}printf("%d\n",p);return 0;}*//*WA2#include<stdio.h>int main(){int N,i,result,temp;scanf("%d",&N);for(result=i=1;i<=N;i++){temp = i;while(temp%100==0){temp /= 100;}temp %= 100;result *=temp;while(result%100==0){result /= 100;}result %= 100;}printf("%d\n",result%10);}*/





0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 办中石化油卡怎么办 移动代充q币没到怎么办 电信手机话费充多了怎么办 微信钱包提现提错银行卡怎么办 qq余额提现不了怎么办 qq钱包充错话费了怎么办 苹果账户扣了钱怎么办 苹果平板冲不进去电怎么办 qq红包输了钱怎么办 qq红包实名认证没有银行卡怎么办 扣扣红包发不了怎么办 qb充错账号了怎么办 q币冲错了号了怎么办 微信qb冲错号码怎么办 微信qb冲错了怎么办 qb冲到小号了怎么办 无意中充了q币怎么办 在绝地求生里打不开充值页面怎么办 电脑版迷你世界打不开怎么办 电脑的腾讯视频打不开怎么办 好多程序连不上网了怎么办 掌游宝炉石传说卡组复制不了怎么办 花呗不能充话费怎么办 想用话费充王者怎么办 苹果6s激活出错怎么办 联通话费充多了怎么办? 电信宽带充值充到别人账号了怎么办 未实名的支付宝钱转不出来怎么办 手机打游戏闪屏怎么办 支付宝手机冲错怎么办 手机停用了支付宝充值码怎么办 苹果手机桌面上找不到支付宝怎么办 苹果手机支付宝找不到了怎么办 微信上充话费没到账怎么办 冲q币不到账怎么办 支付宝冲话费没到帐怎么办 qq实名认证没有银行卡怎么办 微信零钱限额没有银行卡怎么办 qq钱包忘记支付密码怎么办 零钱包密码忘了怎么办 关爱通密码知道卡号忘了怎么办