杭电ACM1066

ewfc12ewrew 2011-06-21 12:19:19
#include<stdio.h>
int
main()
{
long N,i,sum,k;
while(scanf("%ld",&N)!=EOF){
if(N==0){
printf("%d",N);
printf("\n");
}
else {
sum=1;
for(i=1;i<=N;i++){
sum=sum*i;
k=sum%10;
while(k==0){
sum=sum/10;
k=sum%10;
}
sum=k;
}
printf("%ld",sum);
printf("\n");
}
}
return 0;
}
http://acm.hdu.edu.cn/showproblem.php?pid=1066
意思就是求N!的最后一个非0数字
我的思路是这样的
比如6!
首先是1,再是2*1=2,,再是3*2=6,再是4*6=24,再用5*4=20,由于最后一个为0,再用6*2=12
所以最后的结果为2,结果是对的,这是我的思路,但还是对有的数不适用,不明白为什么?




...全文
132 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
naturemickey 2011-06-21
  • 打赏
  • 举报
回复
进位不一定只有一位的,如输入24,则输出6,输入25则输出4。
aixueVC 2011-06-21
  • 打赏
  • 举报
回复
我觉得没有问题啊,什么时候不行?
玩笑 2011-06-21
  • 打赏
  • 举报
回复
K保留的倍数太少了,当5与一个个位是偶数的相乘时,至少需要两位才能确定最后一个非0位是多少

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧