• EOJ Monthly 2019.2 (based on February Selection) D 进制转换 【数学 进制转换】


    任意门:https://acm.ecnu.edu.cn/contest/140/problem/D/

    D. 进制转换

    单测试点时限: 2.0 秒

    内存限制: 256 MB

    “他觉得一个人奋斗更轻松自在。跟没有干劲的人在一起厮混,只会徒增压力。”

    QQ 小方决定一个人研究研究进制转换。

    很快,QQ 小方就遇到问题了。他现在想知道在十进制范围 [l,r] 内有多少整数满足在 k 进制下末尾恰好有 m 个 0

    比如在十进制下的 24 在二进制下是 11000,我们称十进制下的 24 在二进制下末尾恰好有 3 个 0

    QQ 小方一筹莫展,你能帮他解决问题吗?

    输入

    第一行包含一个整数 T (1T105) 表示数据组数。

    对于每组数据包含一行,四个整数 l,r,k,m ( 1lr10182k,m100),含义如题目所述。

    输出

    对于每组数据输出一行,包含一个整数,表示答案。

    样例

    input
    2
    1 10 2 3
    1 100 2 3
    
    output
    1
    6
    

    提示

    例如,在 100 进制下,末位是 90 的数不算作有末尾 0

    解题思路:

    很明显就是求 N % (Km) == 0 且 N % ( Km+1)  != 0;

    但很明显  N % (Km) == 0  的情况包括了 N % ( Km+1)  != 0 的情况,而这种情况刚好就是 K个数 满 K 进位的情况,很容易判断并且找出来。

    wa 的原因在于没有判断无解的情况。。。。。菜哭

    AC code:

     1 #include<bits/stdc++.h>
     2 #define INF 0x3f3f3f3f
     3 #define LL long long
     4 using namespace std;
     5 LL L, R, K, M;
     6 
     7 LL qpow(LL x, LL n)
     8 {
     9     LL res = 1;
    10     while(n){
    11         if(n&1) res*=x;
    12         x*=x;
    13         n>>=1LL;
    14     }
    15     return res;
    16 }
    17 
    18 int main()
    19 {
    20     int T_case;
    21     scanf("%d", &T_case);
    22     while(T_case--){
    23         scanf("%lld %lld %lld %lld", &L, &R, &K, &M);
    24         LL base = qpow(K, M);
    25         LL ans = 0, tot = 0, tp;
    26         if(M*log(K) > log(R)) ans = 0;
    27         else{
    28             LL la = R/base, lb = L/base;
    29             ans = la-(la/K) - (lb-(lb/K));
    30             if((L/base)%K != 0 && L%base == 0) ans++;
    31         }
    32         printf("%lld
    ", ans);
    33     }
    34 
    35     return 0;
    36 }
  • 相关阅读:
    Java设计模式之装饰模式
    学习Emacs系列教程(二):导航
    Android ProgressDialog 延时消失
    java设计模式装饰模式
    Java 字节流和字符流的相互转换
    emacs配置颜色主题
    Android ProgressDialog的使用
    个人管理 时间管理GTD流程图
    jQuery - 列表控件推荐
    WPF - 模板查看工具:Show Me The Template及如何查看第三方主题
  • 原文地址:https://www.cnblogs.com/ymzjj/p/10422484.html
Copyright © 2020-2023  润新知