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月前
|
算法
力扣经典150题第十八题:整数转罗马数字
力扣经典150题第十八题:整数转罗马数字
37 0
宝藏例题(欧几里得算法+素数的三种境界………)
宝藏例题(欧几里得算法+素数的三种境界………)
宝藏例题(欧几里得算法+素数的三种境界………)
|
8月前
|
C语言
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
|
8月前
考研高数之无穷级数题型二:求和函数(题目讲解)
考研高数之无穷级数题型二:求和函数(题目讲解)
142 0
|
Python
牛客刷题之数学基础-约数
牛客刷题之数学基础-约数
63 0
数学知识-约数
数学知识-约数
【蓝桥杯集训·每日一题】AcWing 3625. 幂次方
文章目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 快速幂
72 0
|
算法
Acwing第53场周赛 T2:整除子串反思
Acwing第53场周赛 T2:整除子串反思
109 0
Acwing第53场周赛 T2:整除子串反思
蓝桥杯国赛 小数第n位(数论)
蓝桥杯国赛 小数第n位(数论)
蓝桥杯国赛 小数第n位(数论)
|
Serverless C语言
浙大版《C语言程序设计(第3版)》题目集习题5-4 使用函数求素数和 (20 分)
本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。 素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。 函数接口定义: int prime( int p ); int PrimeSum( int m, int n ); 其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数PrimeSum返回区间[m, n]内所有素数的和。题目保证用户传入的参数m≤n。
1059 1
浙大版《C语言程序设计(第3版)》题目集习题5-4 使用函数求素数和 (20 分)