题解 UVA10212 【The Last Non-zero Digit.】

简介: 题目链接 这题在学长讲完之后和看完题解之后才明白函数怎么构造。这题构造一个$f(n)$$f(n)$ $=$ $n$除以 $2^{a}$ $*$ $5^{b}$ ,$a$ , $b$ 分别是 $n$ 质因数分解后$2,5$的个数。

题目链接

这题在学长讲完之后和看完题解之后才明白函数怎么构造。

这题构造一个$f(n)$

$f(n)$ $=$ $n$除以 $2^{a}$ $*$ $5^{b}$ ,$a$ , $b$ 分别是 $n$ 质因数分解后$2,5$的个数。

然后就暴力算一算就好了。

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
//处理出来n的质因子中,x的个数。
int  prime(int n,int x)
{
    int res=0;
    while(n) res+=n/x,n/=x;
    return res;
}
//f(1)到f(n)中不以5结尾的奇数的个数
int expect_5_end_odd(int n,int x)
{
    if(!n) return 0;
    return n/10+(n%10>=x)+expect_5_end_odd(n/5,x);
}
//以5结尾的数的个数。
int expect_5_end(int n,int x)
{
    if(!n) return 0;
    return expect_5_end(n/2,x)+expect_5_end_odd(n,x);
}

int t[4][4]={
    6,2,4,8,//2^4 2 2^2 2^3 的最后一位
    1,3,9,7,//3^4 3 3^2 3^3 的最后一位
    1,7,9,3,//4……
    1,9,1,9//5……
};

signed main()
{
    int n,m;
    while(~scanf("%d%d",&n,&m))
    {
        m=n-m;
        int prime_2=prime(n,2)-prime(m,2);
        int prime_3=expect_5_end(n,3)-expect_5_end(m,3);
        int prime_5=prime(n,5)-prime(m,5);
        int prime_7=expect_5_end(n,7)-expect_5_end(m,7);
        int prime_9=expect_5_end(n,9)-expect_5_end(m,9);
    
        if(prime_2<prime_5){puts("5");continue;}
    
        int res=1;
        if(prime_2>prime_5) res*=t[0][(prime_2-prime_5)%4];
        res=res*t[1][prime_3%4]*t[2][prime_7%4]*t[3][prime_9%4]%10;
        printf("%lld\n",res);
    }
    return 0;
}

 

相关文章
|
4月前
|
C++
题解 Sticks 小木棍
这篇文章提供了一个C++程序的题解,使用深度优先搜索(DFS)和剪枝技术来解决如何将不同长度的小木棍拼接成若干根长度相等的木棍的问题,以求得拼接长度的最小值。
|
机器学习/深度学习
hdu 1061 Rightmost Digit
hdu 1061 Rightmost Digit
34 0
|
索引
LeetCode 392. Is Subsequence
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。
108 0
LeetCode 392. Is Subsequence
LeetCode 376. Wiggle Subsequence
如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。
102 0
LeetCode 376. Wiggle Subsequence
HDU 4632 Palindrome subsequence(动态规划)
HDU 4632 Palindrome subsequence(动态规划)
80 0
HDU 4632 Palindrome subsequence(动态规划)
HDU-1061,Rightmost Digit(快速幂)
HDU-1061,Rightmost Digit(快速幂)
Uva - 12050 Palindrome Numbers【数论】
题目链接:uva 12050 - Palindrome Numbers   题意:求第n个回文串 思路:首先可以知道的是长度为k的回文串个数有9*10^(k-1),那么依次计算,得出n是长度为多少的串,然后就得到是长度为多少的第几个的回文串了,有个细节注意的是, n计算完后要-1! 下面给出A...
841 0
LeetCode 172 Factorial Trailing Zeroes(阶乘后的零)(*)
版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/50568854 翻译 给定一个整型n,返回n!后面的零的个数。
614 0
[LeetCode] Factorial Trailing Zeros
Well, to compute the number of trailing zeros, we need to first think clear about what will generate a trailing 0? Obviously, a number multiplied by 10 will have a trailing 0 added to it.
721 0