问题标题: 全国青少年信息素养大赛复赛初中组T5(记忆版+解析

0
0
已解决
倪雨泽
倪雨泽
资深光能
资深光能

全国青少年信息素养大赛复赛初中组T5:

题目描述 Description

g(a,b)g(a,b)==ab\overline{\text{ab}}1<=a<=n1<=a<=n1<=b<=m1<=b<=m, 则范围内里有多少对(a,b)(a,b)满足 g(a,b)=(a+1)(b+1)1g(a,b)=(a+1)*(b+1)-1

输入描述 Input Description

一行,两个整数nn,mm

输出描述 Output Description

一行,一个整数表示满足条件的(a,b)(a,b)数量。

样例输入 Sample Input

54 1000

样例输出 Sample Output

162

数据范围及提示 Data Size & Hint

1<=n,m<=21091<=n,m<=2*10^9

慎用暴力,“测试”三个点不过


参考暴力代码:

#include<iostream>
#include<sstream>
using namespace std;
int n,m,res=0;
int main(){
    cin>>n>>m;
    for(int a=1;a<=n;a++){
        for(int b=1;b<=m;b++){
            stringstream ss;
            ss<<a<<b;
            long long g;
            ss>>g;
            long long r=(long long)(a+1)*(b+1)-1;
            if(g==r){
                res++;
                //cout<<a<<' '<<b<<' '<<g<<endl;
            }
        }
    }
    cout<<res;
    return 0;
}

参考找规律代码:

#include<iostream>
using namespace std;
int n,m;
int cnt;
int main(){
    cin>>n>>m;
    for(int i=9;i<=m;i=i*10+9){
        cnt++;
    }
    cout<<cnt*n;
    return 0;
}

规律分析: 若题目我没记错,则使用暴力方法枚举出的符合条件的数对(a,b)(a,b)部分如图。 注意到,应是 >=1>=1<=n<=n 的所有整数与 9,99,9999,99,999....(各位为9的叠数,<=m<=m) 构成符合条件的数对(a,b)(a,b), 故计算小于mm各位皆是9的叠数的数量nn相乘即可。 https://t.tutu.to/md/76e4q 数学证明:


PS:代码不知是否正确,题干不知是否准确

倪雨泽在2025-07-14 15:07:54追加了内容

倪雨泽在2025-07-14 15:08:33追加了内容

倪雨泽在2025-07-14 19:42:25追加了内容

https://www.luogu.com.cn/problem/U581702

倪雨泽在2025-07-14 22:11:27追加了内容

更新:https://www.luogu.com.cn/problem/T632707

倪雨泽在2025-07-15 17:59:52追加了内容

T632707 拼接数

题目背景

2025全国青少年信息素养大赛初中组复赛T5(回忆+解析版)


题目描述

g(a,b)g(a,b) == ab\overline{\text{ab}} ,表示a和b拼接得到的数,其中a,bNa, b \in \mathbb{N}^*.


数学说明

  • ab=a×10log10b+1+b\overline{ab} = a \times 10^{\lfloor \log_{10} b \rfloor + 1} + b
    • 其中 log10b+1\lfloor \log_{10} b \rfloor + 1 计算 bb 的位数。
    • 例子
      • 若 (a=12),(b=34),则 ab=12×102+34=1234\overline{ab} = 12 \times 10^2 + 34 = 1234

: 若1<=a<=n1<=a<=n1<=b<=m1<=b<=m, 则范围内里有多少对(a,b)(a,b)满足 g(a,b)=(a+1)×(b+1)1g(a,b)=(a+1)\times(b+1)-1


输入格式

一行,两个整数nn,mm


输出格式

一行,一个整数表示满足条件的(a,b)(a,b)数量。


输入输出样例 #1

输入 #1

54 1000

输出 #1

162

说明/提示

1<=n,m<=2×1091<=n,m<=2\times10^9

a,bNa, b \in \mathbb{N}^*

慎用暴力,否则“测试”时3/53/5的点不过

注:n,mn,m到底是小于10910^9还是2×1092\times10^9,本人记不清了

 


0
已采纳
钱思源
钱思源
资深天翼
资深天翼

你这洛谷链接疑似查看不了啊

 

0
0
0
我要回答