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. c语言贪吃蛇详解3.让蛇动起来

    c语言贪吃蛇详解3.让蛇动起来 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识点. 上次 ...

  2. spring框架的一些技术总结

    纵观现在互联网行业,java的地位依然不可动摇,因为java拥有着的众多开发人员和适用性广,技术与解决技术大部分开源等特点,因此java依然是众多众多开发行业作为互联网开发的首选,而说到开发,我们就不 ...

  3. video视频铺满

    1. 因项目需求,要在公司官网加一段视频,达到的效果是视频平铺整个网页,大小随网页变化:网上找了许久才找了了这么一个生僻的属性,只需给video加这么个样式就可以了:object-fit: fill; ...

  4. jQuery noConflict() 方法----与其他javaScript插件冲突时

    1,全名代替----jQuery: $.noConflict(); jQuery(document).ready(function(){ jQuery("button").clic ...

  5. javascript设计模式——模板方法模式

    前面的话 在javascript开发中用到继承的场景其实并不是很多,很多时候喜欢用mix-in的方式给对象扩展属性.但这不代表继承在javascript里没有用武之地,虽然没有真正的类和继承机制,但可 ...

  6. JAVA中静态修饰符static的学习(初学)

    静态修饰符static,用于修饰类中的成员变量和成员函数. 用static修饰的成员变量也可叫做类变量. 什么时候使用静态 什么时候定义静态成员变量?     当对象中出现共享数据时,将该数据定义为静 ...

  7. springmvc关于前台日期作为实体类对象参数类型转换错误

    页面报错: 后台错误: Field error in object 'user' on field 'birthday': rejected value [2013-06-24]; codes [ty ...

  8. 【luogu2583】地铁间谍

    https://www.luogu.org/problem/show?pid=2583 设在时刻i,车站j到结束最短需要等待f(i,j)分钟,得状态转移方程: f(i,j)=min{     f(i+ ...

  9. window.open()被拦截问题

    最近做项目的时候遇到一个需求,在商品详情页面中点击购买按钮,之后再新标签页中打开生成的订单页面,所以想用window.open()来实现.但是测试的时候发现打开的链接被浏览器拦截. 之后,开始在网上查 ...

  10. Java设计模式之策略设计模式

    1.什么是-策略设计模式 在软件开发中常常遇到这种情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能.如查找.排序等,一种常用的方法是硬编码(Ha ...