Given two numbers A and B. The task is to compute the last digit of the resulting F, where F= B! / A! .

Input:
The first line of input contains an integer T denoting the number of test cases. Then T test cases follow. Each test case contains two number A and B as input.

Output:
For each test case, print last digit of B! / A! (B factorial/ A factorial).

Constraints:
1<=T<=100
1<=A<=B<=1018

Example:
Input:
2
2 4
107 109

Output:
2
2

Explanation:

Input : A = , B =
Output :
Explanation : A! =  and B! = .
F = / =  --> last digit = 

解题思路:

B!/A!=B*(B-1)*...*(A+1)即只需要求出B*(B-1)*...*(A+1)的最后一位即可

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 ...

会发现只要A、B两个数字相差>4,那么他们最后一位一定是0

当A、B两个数字相差<4时,只需要循环求出B*(B-1)*...*(A+1)的最后一位数字即可。但是因为AB都是在1-10^18,所以我们只需要求这个式子中每一个数字的最后一位相乘的乘积即可。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num,i,j;
    scanf("%d",&num);
    long long *Arr=(long long *)malloc(sizeof(long long)*2*num);
    int *Brr=(int *)malloc(sizeof(int)*num);//存放结果
    for(i=0;i<2*num;i++)//输入各个A、B
    {
        scanf("%d",&Arr[i]);
    }
    for(i=0;i<num;i++)//对每一个用例进行处理
    {
       for(j=0;j<2*num;j=j+2)
       {
           if(Arr[j+1]-Arr[j]>4)//相差大于4,则最后一位一定是0
           {
               Brr[i]=0;
           }
           else//相差小于等于4,则只需要(B*(B-1)*....*(A+1))其中只需要计算最后一位相乘的即可。
           {
               int mul=1,k;
               for(k=Arr[j+1];k>Arr[j];k--)//一共有(Arr[2*i+1]-Arr[2*i])个数相乘
               {
                   mul=mul*(Arr[k]%10);
               }
               Brr[i]=mul%10;
           }
       }
    }
    for(i=0;i<num;i++)
        printf("%d\n",Brr[i]);
    return 0;
}

  

[Find the last digit when factorial of A divides factorial of B]的更多相关文章

  1. Factorial

    Factorial  计算阶乘 In mathematics, the factorial of a non-negative integer n, denoted by n!, is the pro ...

  2. 快速入门:Python简单实例100个(入门完整版)

    Python3 100例 文章目录 Python3 100例 实例001:数字组合 实例002:“个税计算” 实例003:完全平方数 实例004:这天第几天 实例005:三数排序 实例006:斐波那契 ...

  3. python100实例

    实例001:数字组合 题目 有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析 遍历全部可能,把有重复的剃掉. total=0 for i in range(1 ...

  4. (转)C++语言的15个晦涩特性

    原文链接: Evan Wallace   翻译: 伯乐在线- 敏敏 译文链接: http://blog.jobbole.com/54140/ 这个列表收集了 C++ 语言的一些晦涩(Obscure)特 ...

  5. JavaScript 精粹

    数据类型 JavaScript 是 弱类型 语言,但并不是没有类型,JavaScript可以识别下面 7 种不同类型的值: 基本数据类型 Boolean Number String null unde ...

  6. java基础练习 字符串,控制流,日历,日期等

    1,对基本控制流程的一些练习 package org.base.practice3; import org.junit.Test; /** * Created with IntelliJ IDEA. ...

  7. 计算(LnN!)的值

    import java.util.*;import java.math.*;public class CaculatorLnN { public static void main(String[] a ...

  8. 每天写点shell——read的用法

    1.read基本读取 #!/bin/bash #testing the read command echo -n "Enter you name:" #echo -n 让用户直接在 ...

  9. Google C++单元测试框架---Gtest框架简介(译文)

    一.设置一个新的测试项目 在用google test写测试项目之前,需要先编译gtest到library库并将测试与其链接.我们为一些流行的构建系统提供了构建文件: msvc/ for Visual ...

随机推荐

  1. web离线应用--dom storage

    web离线应用--dom storage dom storage是html5添加的新功能,其实也不是什么新的应用,只不过是cookie的放大版本,由于cookie的大小只有4kb,而且在每次请求一个新 ...

  2. JavaScript--我发现,原来你是这样的JS:函数表达式和闭包

    一.介绍 本次博客主要介绍函数表达式的内容,主要是闭包. 二.函数表达式 定义函数的两种方式:一个是函数声明,另一个就是函数表达式. //1.函数声明写法 function fn2(){ consol ...

  3. Azure 基础:使用 Traffic Manager 分流用户请求

    为了减少 web 服务器的宕机时间,同时也提高服务器的响应性能,我们往往部署多个站点并通过负载均衡来对外提供服务.Azure 提供的 Traffic Manager 服务属于负载均衡的一种,特点是工作 ...

  4. PHP扩展代码结构详解

    PHP扩展代码结构详解: 这个是继:使用ext_skel和phpize构建php5扩展  内容 (拆分出来) Zend_API:深入_PHP_内核:http://cn2.php.net/manual/ ...

  5. angularJS简单调用接口,实现数组页面打印

    相比较jquery ,angular对这种接口数据处理起来会方便的多.这里举例调用 中国天气网的api接口. 首先肯定要引入angular.js这个不多说 <link rel="sty ...

  6. 两个实用linux小工具

    使用 sshpass 工具来做名密码输入 使用 alias 别名来做成命令语句. Linux命令之非交互SSH密码验证-sshpass ssh登陆不能在命令行中指定密码.sshpass的出现,解决了这 ...

  7. post 与get 区别

    刷新/后退按钮 GET后退按钮/刷新无害,POST数据会被重新提交(浏览器应该告知用户数据会被重新提交). 书签 GET书签可收藏,POST为书签不可收藏. 缓存 GET能被缓存 缓存是针对URL来进 ...

  8. java进阶书籍

    1.<深入理解Java虚拟机:JVM高级特性与最佳实践> 2.<HotSpot实战> 3.<Java并发编程实战> Brian Goetz 4. <Java多 ...

  9. 让你的Javascript提升70%性能

    现在的JavaScript代码要进行性能优化,通常使用一些常规手段,如:延迟执行.预处理.setTimeout等异步方式避免处理主线程,高大上一点的会使用WebWorker.即使对于WebWorker ...

  10. linux kvm虚拟机使用

    安装配置kvm 1.安装kvm软件包 [root@kvm ~]# yum install kvm python-virtinst libvirt tunctl bridge-utils virt-ma ...