E-牛牛小数点_牛客练习赛89(数学)

简介: 笔记

E-牛牛小数点_牛客练习赛89 (nowcoder.com)


题目描述

牛牛想和点点交朋友, 于是点点给了牛牛一个问题0.png


数据范围

1 ⩽ T ⩽ 100 , 1 ⩽ l ⩽ r ⩽ 1 0 15


思路

130.png


证明


140.png150.png


代码

#include<bits/stdc++.h>
#include<unordered_map>
#define int long long
#define INF 0x3f3f3f3f
#define INFL 0x3f3f3f3f3f3f3f3f
#define mod 1000000007
#define MOD 998244353
#define rep(i, st, ed) for (int (i) = (st); (i) <= (ed);++(i))
#define pre(i, ed, st) for (int (i) = (ed); (i) >= (st);--(i))
#define debug(x,y) cerr << (x) << " == " << (y) << endl;
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int, int> PII;
template<typename T> inline T gcd(T a, T b) { return b ? gcd(b, a % b) : a; }
template<typename T> inline T lowbit(T x) { return x & -x; }
//template<typename T> T qmi(T a, T b = mod - 2, T p = mod) { T res = 1; b %= (p - 1 == 0 ? p : p - 1); while (b) { if (b & 1) { res = (LL)res * a % p; }b >>= 1; a = (LL)a * a % p; }return res % mod; }
const int N = 1e5 + 10;
int qmi(int a, int b) {
  int res = 1;
  while (b) {
    if (b & 1)res = (res * a);
    b >>= 1;
    a = (a * a);
  }
  return res;
}
int cal(int r) {
  int res = 0;
  int t2 = log(r) / log(2ll);
  for (int i = 0; i <= t2; ++i) {
    for (int j = 0; qmi(5ll, j) * qmi(2ll, i) <= r; ++j) {
      //debug("i", i);
      //debug("j", j);
      int x = r / (qmi(2ll, i) * qmi(5ll, j));
      x = ((x - x / 2ll - x / 5ll + x / 10ll - 1ll) + MOD) % MOD;
      res = (res + (max(i, j) + 1ll) * x % MOD) % MOD;
    }
  }
  return res % MOD;
}
void solve() {
  int l, r; scanf("%lld%lld", &l, &r);
  cout << (cal(r) - cal(l - 1) + MOD) % MOD << endl;
}
signed main() {
  int _; cin >> _;
  while (_--)
    solve();
  return 0;
}


目录
相关文章
|
7月前
【洛谷 P1781】宇宙总统 题解(高精度+结构体排序)
在宇宙总统竞选中,需计算得到最高票者。程序接收$n$($1\leq n\leq 20$)个候选人及其票数,使用自定义比较器`cmp`对结构体数组`vote`按票数长度排序。样例输入5人,票数分别为98765、12365、87954、1022356、985678,输出显示编号为4的候选人(票数1022356)获胜。代码中,结构体`S`包含候选人ID和票数字符串,通过`sort`函数及`cmp`函数按票数长度降序排列,输出首位即为胜者。
45 0
|
8月前
|
存储
每日一题啦(● ̄(エ) ̄●)(尼克切斯定理,等差数列)
每日一题啦(● ̄(エ) ̄●)(尼克切斯定理,等差数列)
37 0
|
Python
牛客刷题之数学基础-约数
牛客刷题之数学基础-约数
63 0
|
Java 测试技术 C语言
【蓝桥杯基础题】2020年省赛填空题—回文日期
【蓝桥杯基础题】2020年省赛填空题—回文日期
【蓝桥杯基础题】2020年省赛填空题—回文日期
|
C++
【寒假每日一题】AcWing 4728. 乘方
目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解
154 0
【蓝桥杯集训·每日一题】AcWing 3625. 幂次方
文章目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 快速幂
71 0
【每日一题Day35】LC878第N个神奇数字 | 二分查找 找规律 + 数学
思路:将问题**“第n个神奇数是x”转化为“小于等于x的神奇数有n个”**,由于x越大n一定越大,因此可以使用二分法查找一个神奇数小于等于n的区间(0,right],最后返回右边界
214 0
【每日一题Day35】LC878第N个神奇数字 | 二分查找 找规律 + 数学
|
人工智能
【蓝桥杯集训·每日一题】AcWing 3956. 截断数组
文章目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 一维前缀和
71 0
|
人工智能 算法 测试技术
【寒假每日一题】AcWing 4644. 求和(补)
目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解
89 0